CGI、PHP-CGI、FastCGI、PHP-FPM的区别

CGI(Common Gateway Interface)称为通用网关接口,是Web Server和Web Application之间数据交换的一种协议,注意它是一种协议,跟语言没有关系。

CGI 针对每个HTTP请求都会fork一个新进程来进行处理,然后把这个进程处理完的结果通过Web服务器转发给用户,刚刚fork的新进程也随之退出,如果下次用户再请求动态资源,那么Web 服务器又再次fork一个新进程,如此周而复始循环往复。

FastCGI,也是Web Server和Web Application之间数据交换的一种协议。注意,它仍然是一种协议,跟语言没有关系。不同于CGI每个请求都创建一个新进程,FastCGI则会先fork一个master进程,然后再fork多个worker进程(与Nginx有点像),当HTTP请求过来时,master进程会将其传递给一个worker进程,然后立即可以接受下一个请求,这样就避免了重复的初始化操作,效率自然也就提高了。而且当worker进程不够用时,master进程还可以根据配置预先启动几个worker进程等着;当空闲worker进程太多时,也会关掉一些,这样不仅提高了性能,还节约了系统资源。

PHP-CGI是CGI协议在PHP上的实现,PHP-FPM(FastCGI Process Manager)称为FastCGI 进程管理器,是FastCGI协议在PHP上的实现。

PHP-FPM负责管理一个进程池来处理来自Web服务器的HTTP动态请求,在PHP-FPM中,master进程负责与Web服务器进行通信,接收HTTP请求,再将请求转发给worker进程进行处理,worker进程主要负责动态执行PHP代码,处理完成后,将处理结果返回给Web服务器,再由Web服务器将结果发送给客户端。这就是PHP-FPM的基本工作原理。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/phpe/3715.html

(0)
上一篇 2021年5月5日 02:58
下一篇 2021年5月8日 22:21

相关推荐

  • PHP Extensions(PHP Modules)、Zend Extensions、PECL、PEAR的区别

    PHP Extensions(PHP扩展):在PHP源码内部,为了与Zend Extensions(Zend扩展)命名上的区分,PHP Extensions(PHP扩展)又称为PHP Modules(PHP模块)。如果我们读到“extension”关键字的时候,我们应该首先想到的是Zend Extensions(Zen…

    PHP经验 2021年5月8日
    01.1K0
  • PHP代码的三种运行方式

    1.php -r命令式 2.php -f文件式 helloworld.php文件代码清单: 启动终端,使用cd命令,切换到存放 helloworld.php 文件的目录。执行以下命令: 3.php -a交互式

    PHP经验 2023年1月24日
    01360
  • PHP中echo语言结构的详解

    echo不是函数,而是语言结构。 1.输出 echo输出作为参数的一个或多个字符串表达式,但输出时不会给每一个字符串表达式结束引号’或”自动添加额外的换行符或者空格。 2.参数 echo的参数是要输出的一个或多个字符串表达式。 字符串表达式可以作为多个参数使用逗号分隔符单独传递,也可以使用字符串连接符连接在一起作为单个…

    PHP经验 2021年10月29日
    05690

发表回复

登录后才能评论