一、CGI 和 FastCGI 都只是一种通信协议规范,不是一个实体,一般说的CGI指的是用各种语言编写的能实现该功能的程序
二、CGI 程序和FastCGI程序,是指实现这两个协议的程序,可以是任何语言实现这个协议的。(PHP-CGI 和 PHP-FPM就是实现FastCGI的程序)
三、PHP-CGI是使用php实现CGI协议的CGI程序,可以用来管理php解释器。
1.php-cgi变更php.ini配置后需重启php-cgi才能让新的配置生效,不可以平滑重启
2.直接杀死php-cgi进程php就不能运行了
四、CGI程序和FastCGI程序的区别:
关于CGI程序:
CGI使外部程序与Web服务器之间交互成为可能。CGI程序运行在独立的进程中,并对每个Web请求建立一个进程,这种方法非常容易实现,但效率很差,难以扩展。面对大量请求,进程的大量建立和消亡使操作系统性能大大下降。此外,由于地址空间无法共享,也限制了资源重用。
关于FastCGI程序:
与CGI程序为每个请求创建一个新的进程不同,FastCGI使用持续的进程(master)来处理一连串的请求。这些进程由FastCGI服务器管理,而不是web服务器。 当进来一个请求时,web服务器把环境变量和这个页面请求通过一个socket或者一个TCP connection传递给FastCGI进程。
五、关于PHP-FPM(FastCGI Process Manager)
针对PHP-CGI的不足,PHP-FPM和Spaw