CGI,FAST-CGI,PHP-FPM的区别

举报
lxw1844912514 发表于 2022/03/27 04:25:42 2022/03/27
【摘要】 http://blog.csdn.net/xsgnzb/article/details/52875331 CGI全称Common Gateway Interface即公共网关接口,它遵循cgi规范,定义了与其他服务之间的通信协议,如nginx将请求转给php时,应该携带哪些信息,header、postdata、host等等...
http://blog.csdn.net/xsgnzb/article/details/52875331

CGI全称Common Gateway Interface即公共网关接口,它遵循cgi规范,定义了与其他服务之间的通信协议,如nginx将请求转给php时,应该携带哪些信息,header、postdata、host等等,php在处理完程序之后返回内容的格式如何等规则。
        php在使用CGI的方式启动时,在一个请求到来时,会加载php.ini文件初始化相关环境,在请求处理完之后又销毁。新请求过来时又进行一次同样的操作,消耗了服务器资源。
        为了解决这个问题,所以有了FAST-CGI的出现。
        FAST-CGI顾名思义是要提高CGI的效率,它主要处理CGI重复初始化的过程。先看下FAST-CGI的原理:
    1、Web Server 启动时加载FAST-CGI的进程管理器,如apache module
    2、FASTCGI进程管理器自身初始化,启动多个php-cgi(CGI解释器进程),并等待来自web server的链接
    3、接收到请求时,FastCgi选择并链接到一个php-cgi,将CGI的环境变量和标准输入发送到FastCgi的php-cgi进程
    4、处理完成后,php-cgi将标准输出和错误信息返回web server,并断开与FastCgi的连接,等待下一次请求接入。如果是CLI模式下,则php-cgi直接退出。
        FastCgi的缺点:
    启动多个进程,占用内存,一个php-cgi程序通常占用7-25M内存,如果在很多请求并发量下,内存消耗严重。
        PHP-CGI是FastCgi的管理进器,它的不足:
    1、修改php.ini文件要重启php-cgi才能生效,不能平滑重启
    2、直接杀死php-cgi,php不能运行

        PHP-FPM 即PHP FastCgi Process Manager,FasgCgi的进程管理器,它相对于PHP-CGI的优点:
    1、平滑重载PHP配置
    2、内存和进程控制更有效
       在./configure的时候带 –enable-fpm参数即可开启PHP-FPM。

        简单的理解,CGI和FASTCGI是通信协议V1.0和V2.0,而PHP-CGI和PHP-FPM是实现了这种协议的程序。所以处理具体请求的是PHP-CGI或PHP-FPM,它们遵循fastcgi协议。

文章来源: blog.csdn.net,作者:lxw1844912514,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/lxw1844912514/article/details/100029111

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。