美文网首页
不要在傻傻分不清 CGI、FastCGI、PHP-CGI、PHP

不要在傻傻分不清 CGI、FastCGI、PHP-CGI、PHP

作者: chf041 | 来源:发表于2020-08-28 11:26 被阅读0次

    一、概念

    首先,还得来点官方的解释。

    CGI:common gateway interface 通用网关接口,它描述了客户端与程序之间传输数据的一种标准。简单来说它就是一种协议。

    FastCGI:也是一种协议,是CGI的一种改进升级,实现上是一个常驻型进程,可以一直执行,在请求到来的时候不会重新fork进程去处理。

    PHP-CGI:是一个程序,用来解释PHP脚本。

    PHP-FPM:是一个进程管理器,只用作PHP,是PHP源码的一个补丁,将FastCGI进程整合到php包中,PHP-FPM提供了更好的PHP进程管理方式,可以有效地控制进程,平滑加载PHP配置。

    明白不,一个是协议,一个是程序,一个是进程管理器,都有各自的职责,别老把人家往一起混。

    二、来张图解,说说他们之间说的清道的明的关系

    1,使用CGI时候的流程,为啥使用CGI会慢,就是因为它每次都要重新fork进程去处理数据,每次启动都要重新加载php.ini、重新初始化环境,每次都做费时费力的工作,能不慢么。

    image.png

    2,看看fastcgi是怎么改进的

    人家就不像CGI进程那么傻,每次都重新开始,人家一开始就起一堆放在那,你来数据了我就让这些进程处理,处理完了就让进程呆在那等着,除了会占用内存多点,但人家效率高啊。

    image.png

    三、作用

      1.fastcgi主要是把php语言和http server分开,所以nginx和php常常部署在不同机器上,以减轻nginx和后端的压力。
      2.可以在进程不终止的情况下重新加载修改过的配置文件php.ini。
    

    四、总结

    1. 如CGI,FastCGI也具有语言无关性。

    2. 如CGI, FastCGI在进程中的应用程序,独立于核心web服务器运行,提供了一个比API更安全的环境。(API是把应用程序的代码与核心的web服务器链接在一起,这意味着在一个错误的API的应用程序可能会损坏其他应用程序或核心服务器; 恶意的API的应用程序代码甚至可以窃取另一个应用程序或核心服务器的密钥。)

    3.FastCGI技术目前支持语言有 PHPC/C++、Java、Perl、Tcl、PythonSmallTalkRuby、Aardio等。相关模块在Apache,IIS, Lighttpd,Nginx等流行的服务器上也是可用的。

    4.如CGI,FastCGI的不依赖于任何Web服务器的内部架构,因此即使服务器技术的变化, FastCGI依然稳定不变。

    相关文章

      网友评论

          本文标题:不要在傻傻分不清 CGI、FastCGI、PHP-CGI、PHP

          本文链接:https://www.haomeiwen.com/subject/flxlsktx.html