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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Matlab 中绘制模糊隶属度函数

    Matlab 中绘制模糊隶属度函数6 2 模糊推理结构 FIS6 2 1 不使用数据聚类方法从数据生成 FIS 结构函数 genfis1 格式 fismat genfis1 data fismat genfis1 data numMFs inmftype outmftype 说明 genfis1 为 anfis 训练生成一个 Sugeno 型作为初始条件的 FIS 结构 初始隶属函数 genfis1 data numMFs inmft

    2025年10月3日
    6
  • “自动修复”无法修复你的电脑(电脑黑屏按哪三个键)

    早上起来已开机,就看到电脑在自动修复,顿时感觉要出事,果不其然就一直这样,安全模式也经不来,后多方查找资料,不重装系统,不进pe完美将其解决。首先点击高级选项,疑难解答,高级选项,命令提示符。不出意外的话就进入黑框框了。bcdbootc:\windows/lzh-cn然后回车,电脑会重启。重启之后发现提示无法加载系统按F1进入之后选微软键盘,进入到命令行界面,删除这个sys文…

    2022年4月12日
    124
  • db4o数据库的基本操作

    db4o数据库的基本操作对db4o(面向对象的数据库)的基本操作: 数据库的链接:privatestaticObjectContainerdb; finalstaticStringDB4OFILENAME=System.getProperty("user.dir") +"/database.db4o"; static{ db=Db4oEmbedde…

    2022年7月21日
    16
  • export命令什么意思_report函数

    export命令什么意思_report函数一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本。    —-《UNIX教程》

    2025年9月26日
    4
  • Intellij IDEA过期怎么激活(最新激活码)(JetBrains全家桶)2022.02.17

    (Intellij IDEA过期怎么激活(最新激活码))JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年4月1日
    382
  • IIS7配置防盗链「建议收藏」

    IIS7配置防盗链「建议收藏」在IIS下如何实现Web的防盗链等Url重定向了,用下面的方法即可实现:1、下载微软官方提供的IISREWRITE模块:http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid=1b8c7bd8-8824-4408-b8fc-49dc7f951a002、修改Web站点的web.config<syst…

    2022年7月23日
    9

发表回复

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

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