1、什么是CGIFastCGI

  CGI:

  通用网关接口Common Gateway Interface/CGI)是一种重要的互联网技术,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。CGI描述了服务器和请求处理程序之间传输数据的一种标准。

  FastCGI:

  快速通用网关接口Fast Common Gateway InterfaceFastCGI)是一种让交互程序与Web服务器通信的协议。FastCGI是早期通用网关接口(CGI)的增强版本。

  FastCGI致力于减少网页服务器与CGI程序之间互动的开销,从而使服务器可以同时处理更多的网页请求。

 

  结论:CGIFastCGI都是协议、有别于CGI程序、FastCGI程序

 

2CGI管理器、FastCGI管理器、PHP-CGIPHP-FPM

  CGI管理器:

   CGI程序顾名思义就是基于CGI协议提供接口,供程序之间通讯,如Web服务器(Apache)Web应用程序(PHP),但是由于CGI每一次web请求都会有启动和退出过程,也就是最为人诟病的fork-and-execute模式,只要并发量大,服务器就会奔溃

 

 FastCGI管理器:

  因为CGI的缺陷,所以FastCGI诞生了,FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次。它还支持分布式的运算, FastCGI 程序可以在网站服务器以外的主机上执行,并且接受来自其它网站服务器来的请求。提供良好的性能、伸缩性、Fail- Over特性等等。

 

 PHP-CGI:

   PHP-CGIPHP自带的FastCGI管理器,也就是专门给PHP使用的FastCGI管理器

   PHP-CGI的不足:

   1php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启。

   2、直接杀死php-cgi进程,php就不能运行了。(PHP-FPMSpawn-FCGI就没有这个问题,守护进程会平滑从新生成新的子进程。)

 

 PHP-FPM:

  因为PHP-CGI的不足,所以PHP-FPM诞生了,它解决了PHP-CGI的不足,同时还具备更多的功能,还表现在其他方面更表现强劲。

  PHP-FPM 是对于 FastCGI 协议的具体实现,他负责管理一个进程池,来处理来自Web服务器的请求生成新的子进程。

 

cgi-diff.png

版权声明:未经博主允许不得转载。http://smister.com/post-34/cgi.html