关于cgi,fastcgi,php-fpm的一些个人理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于cgi,fastcgi,php-fpm的一些个人理解相关的知识,希望对你有一定的参考价值。

  • 个人将cgi理解为翻译工具,举个例子,webserver如apache是中国人,收到的请求访问php文件是法国人,两者语言不通,无法沟通。这时cgi作为一个接口工具,为两者做翻译的服务。cgi程序会解析php的内容,以双方约定的形式返回web服务器。

 

  • cgi全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。当web server(nginx)收到/index.php这个请求后,会启动对应的CGI程序,这里就是PHP的解析器。接下来PHP解析器会解析php.ini文件,初始化执行环境(消耗大量时间,对每个请求都要执行,fastcgi就是对这个过程的优化),然后处理请求,再以CGI规定的格式返回处理后的结果,退出进程。web server再把结果返回给浏览器。
  • Fastcgi是用来提高CGI程序性能的。WEB服务器与处理程序之间通信的一种协议,是CGI的改进方案。用来沟通程序(如PHP, Python, Java)和Web服务器(Apache2, Nginx), 理论上任何语言编写的程序都可以通过Fastcgi来提供Web服务。 Fastcgi的特点是会启动一个master,解析php.ini文件,初始化环境。在一个进程中依次完成多个请求,以达到提高效率的目的,大多数Fastcgi实现都会维护一个进程池。
  • PHP-fpm: 是一个实现了Fastcgi的程序,被PHP官方收录了(php5.3)。fastcgi是一个协议,php-fpm实现了这个协议

 

以上是关于关于cgi,fastcgi,php-fpm的一些个人理解的主要内容,如果未能解决你的问题,请参考以下文章

FastCGI与php-fpm

FastCgi与PHP-fpm之间是个什么样的关系

cgi fastcgi php-cgi php-fpm

php-fpm/fastCGI/CGI/opcache

搞不清FastCgi与PHP-fpm之间是个什么样的关系(转载)

比较CGI,FastCGI,PHP-CGI与PHP-FPM的区别