CGI是干吗的?php
CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者。web server(好比说nginx)只是内容的分发者。好比,若是请求的是/index/html,那么web server会去文件系统找到这个文件,发送给浏览器,这里分发的是静态数据。若是,请求的是/index.php,根据配置文件,nginx知道这不是一个静态文件,须要去找PHP解析器来处理,那么他会 把这个请求丢给PHP解释器,可是他如何跟PHP解释器进行沟通呢?CGI就是规定了他们之间沟通的协议。当PHP解析器处理完请求同理再以规定的CGUI格式返回处理后的结果,退出进程。web server 再将结果返回给浏览器。html
PHP-CGI是什么呢?nginx
PHP-CGI是PHP自带的FastCGI管理器。已经弃用了,缘由在于修改php.ini必需要重启才能生效,不支持平滑重启;另一个缘由在于,杀死php-cgi进程后,php就不能运行了。(PHP-FPM和Spawn-FCGI就没有这个问题,守护进程会平滑重新生成新的子进程。)web
FASTCGI是什么?浏览器
Fastcgi是用来提升CGI程序性能的。那么CGI程序的性能问题在哪呢?"PHP解析器会解析php.ini文件,初始化执行环境",就是这里了。标准的CGI对每一个请求都会执行这些步骤,因此处理每一个时间的时间会比较长。这明显不合理嘛!那么Fastcgi是怎么作的呢?其主要行为是将CGI解释器进程保持在内存中并所以得到较高的性能。性能
PHP-FPM是什么呢?spa
PHP-FPM是一个PHP FASTCGI管理器,只能用于PHP。server