• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

带你认识PHP运行模式

php 搞代码 4年前 (2022-01-21) 17次浏览 已收录 0个评论

推荐:《PHP视频教程》

PHP有五种运行模式,常见的有4种:

1.CGI(通用网关接口/ Common Gateway Interface)
2.FastCGI(常驻型CGI / Long-Live CGI)
3.CLI(命令行运行 / Command Line Interface)
4.LoadModule【Apache独有】
5.ISAPI(Internet Server Application Program Interface)【IIS独有】

备注:在PHP5.3以后,PHP不再有ISAPI模式,安装后也不再有php5isapi.dll这个文件。要在IIS6上使用高版本PHP,必须安装FastCGI 扩展,然后使IIS6支持FastCGI。

查看当前运行模式
echo php_sapi_name();

CGI模式

介绍:

CGI即通用网关接口(Common Gateway Interface),它是一段程序,通俗的讲CGI就象是一座桥,把网页和Web服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器的执行程序,再把服务器执行程序的结果返还给HTML页。CGI 的跨平台性能极佳,几乎可以在任何操作系统上实现。

调用过程:Fork-And-Execute模式

用户请求 —> web服务器接收请求【常用Nginx、apache】—> fork CGI的子进程&处理请求 —-> 请求处理完毕,返回结果到web服务器&销毁子进程 —> web服务器返回结果给用户

图解:

优势:

作为PHP最早的运行模式,每次请求都独立处理,调用过程足够简单清晰,可控性强
进程间是隔离的,保证数据不会被污染

劣势:

每次请求都需要fork一个新的CGI子进程,假如同一时间并发请求一千,意味着就要fork一千个子进程,这就会导致几个问题:

  1. fork子进程需要时间,需要占用内存【copy-on-write】
  2. 子进程过多,会导致CPU将大量的时间花费在上下文切换上
  3. 每次请求需要重新加载相关资源

FastCGI模式

介绍:

FastCGI是CGI的升级版本@本文来*源gaodai#ma#com搞*!代#%^码$网*,FastCGI像是一个常驻 (long-live)型的 CGI,在启动web服务器的时候载入FastCGI进程管理器【PHP-FPM、IIS ISAPI、Apache Module】,当有请求过来的时候,web服务器只需要交给FastCGI进程管理器处理即可。
调用过程:以 PHP-FPM 为例

web服务器启动的时候 启动 PHP-FPM master进程(主要负责分配请求给空闲的自子进程处理)以及一定数量的fast-cgi子进程(负责处理请求)。 PHP-FPM master进程管理一个进程池,池里有若干个fast-cgi子进程,每个fast-cgi子进程单独处理一个请求,互不干涉。

用户请求 —> web服务器接收请求【常用Nginx、apache】—> 检测到是PHP请求&转发给FPM master进程 —> FPM master进程 指定空闲fast-cgi子进程处理请求 —> 子进程载入文件(如php.ini)及其他资源处理请求 —> 处理结束&清除资源,结果返回master & 子进程挂起,标记为空闲—> master 将结果返回web服务器 —> web服务器返回结果给用户

图解:

优势:

  1. 从稳定性上看,FastCGI是以独立的进程池来运行CGI,单独一个进程死掉,系统可以很轻易的丢弃,然后重新分配新的进程来运行逻辑
  2. 从安全性上看,FastCGI和宿主的web Server完全独立,FastCGI 不会影响web 服务器的运行【如果PHP-FPM处于关闭状态,则会返回502 bad gateway 给用户】
  3. 从性能上看,FastCGI把动态逻辑的处理从 web Server中分离出来,大负荷的IO处理还是留给宿主Server,这样宿主Server可以一心一意作IO【对于一个普通的动态网页来说, 逻辑处理可能只有一小部分,更多的是图片等静态资源的加载】

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:带你认识PHP运行模式

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址