1、什么是CGI和FastCGI
CGI:
通用网关接口(Common Gateway Interface/CGI)是一种重要的互联网技术,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。CGI描述了服务器和请求处理程序之间传输数据的一种标准。
FastCGI:
快速通用网关接口(Fast Common Gateway Interface/FastCGI)是一种让交互程序与Web服务器通信的协议。FastCGI是早期通用网关接口(CGI)的增强版本。
FastCGI致力于减少网页服务器与CGI程序之间互动的开销,从而使服务器可以同时处理更多的网页请求。
结论:CGI跟FastCGI都是协议、有别于CGI程序、FastCGI程序
2、CGI管理器、FastCGI管理器、PHP-CGI、PHP-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-CGI是PHP自带的FastCGI管理器,也就是专门给PHP使用的FastCGI管理器
PHP-CGI的不足:
1、php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启。
2、直接杀死php-cgi进程,php就不能运行了。(PHP-FPM和Spawn-FCGI就没有这个问题,守护进程会平滑从新生成新的子进程。)
PHP-FPM:
因为PHP-CGI的不足,所以PHP-FPM诞生了,它解决了PHP-CGI的不足,同时还具备更多的功能,还表现在其他方面更表现强劲。
PHP-FPM 是对于 FastCGI 协议的具体实现,他负责管理一个进程池,来处理来自Web服务器的请求生成新的子进程。
版权声明:未经博主允许不得转载。https://yigainian.com/post-34/cgi.html