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

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

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协议。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113881.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • biting的意思_什么是bit

    biting的意思_什么是bitCM3的存储器系统支持所谓的“位带”(bit-band)操作。通过它,实现了对单一比特的原子操作。位带操作仅适用于一些特殊的存储器区域中。 位带区与位带别名区的膨胀关系图      在位带区中,每个比特都映射到别名地址区的一个字——这是个只有LSB才有效的字。 支持位带操作的两个内存区的范围是:0x200

    2022年10月13日
    4
  • java全局变量和静态变量的区别_java局部静态变量

    java全局变量和静态变量的区别_java局部静态变量全局变量和局部变量的简介:1、全局变量:描述对象有什么(在类中定义),类中所有方法都可以使用。2、局部变量:临时保存数据(在类的方法中定义),只能在当前方法中使用。全局变量和局部变量的区别:1、作用域不同全局变量=整个类中可用局部变量=该方法内可用2、初始值不同全局变量=有初始值局部变量=无初始值3、声明上不同全局变量=在一个类中不允许声明同名变量局部变量=在一个方…

    2022年8月21日
    4
  • JAVA获取服务器上文件路径,java 获取远程服务器目录的路径

    JAVA获取服务器上文件路径,java 获取远程服务器目录的路径java获取远程服务器目录的路径内容精选换一换已将所需升级的鲲鹏性能分析工具的软件包下载到本地。获取软件包后,需要校验软件包,确保与网站上的原始软件包一致,详细步骤请参见软件包校验。获取软件包后,需要校验软件包,确保与网站上的原始软件包一致,详细步骤请参见软件包校验。升级前请确认鲲鹏性能分析工具可以正常使用。升级前请确认安装空间至少保留原工具安装目录的大小加上新版本安装空间(1GB)为加强对系…

    2022年7月11日
    61
  • Android手机以L2TP方式连接LAVAVPN的设置方法

    Android手机以L2TP方式连接LAVAVPN的设置方法1.准备首先手机要打开WIFI或GPRS或3G连接,确保网络畅通。建议用WIFI网络测试,因为部分地区的GPRS或3G网络不支持或屏蔽VPN通讯。2.打开手机主菜单,选择"设置"3

    2022年7月2日
    35
  • python导入xml文件_python爬虫写入excel

    python导入xml文件_python爬虫写入excel最近在使用Testlink时,发现导入的用例是xml格式,且没有合适的工具转成excel格式,xml使用excel打开显示的东西也太多,网上也有相关工具转成csv格式的,结果也不合人意。那求人不如尔己,自己写一个吧需要用到的模块有:xml.dom.minidom(python自带)、xlwt使用版本:python:2.7.5xlwt:1.0.0一、先分析TestlinkXML格式:这是一个有两级…

    2022年8月22日
    5
  • 使用谷歌搜索攻略_Google浏览器

    使用谷歌搜索攻略_Google浏览器由于谷歌被封,无法使用谷歌搜索。但是对于研发人员来说,很多问题只有在谷歌中才能找到答案。后来一朋友推荐了archsocks代理服务1、访问https://github.com/archsocks/archsocks链接,下载windows版本安装。 如果没有,附件中有安装文件2、按照readme中的操作步骤来操作。 3、配置pac代理。 首先打开网络网络和共享中…

    2025年9月7日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号