CGI的定义
CGI(Common Gateway Interface) 全称是公共网关接口,HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上,是一种通信协议,通信规范,是与其它程序通信的桥梁,例如与PHP脚本解析器进行通讯。
CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等.
使用CGI的时候,每个PHP程序都会执行这么一个过程:PHP解析器解析php.ini配置文件,初始化PHP执行环境,这样导致了性能比较差,所以FastCGI诞生了
FastCGI
FastCGI跟CGI也是一样的,都是通讯协议,不同地方在于执行过程不一样,FastCGI首先会启动一个master,然后解析配置文件,初始化环境,然后再生成多个worker。请求过来的时候,把请求分配给worker,如果worker不够用,则会根据配置文件预先启动几个workder,空闲的时候会自动停止部分worker,这样就达到了提升性能的目的。
PHP-CGI和PHP-FPM
PHP-CGI其实就是PHP脚本解析器,它是CGI协议的实现。进行解析请求,返回结果。
PHP-FPM就是FastCGI协议的实现,PHP-FPM不进行解析请求,结果返回,它只是进程管理器,进行调度PHP解析器来处理请求。