浅析php-fpm和fastcgi的关系

先讲讲CGI吧

浏览器向web server发起请求的时候,要有url,header,params等等吧,为什么有这些数据呢,这就是CGI的事了,CGI就规定了,传哪些数据,用什么样的格式传输

web server收到请求后,会启动PHP解析器,然后解析php.ini文件,初始化执行环境,处理这个请求,然后返回结果给浏览器

但是,每一个CGI都会初始化环境,处理请求,效率太慢,那么,fastcgi,就诞生了,fastcgi是怎么工作的,这里引用一句话

Fastcgi会先启一个master,解析配置文件,初始化执行环境,然后再启动多个worker。当请求过来时,master会传递给一个worker,然后立即可以接受下一个请求。这样就避免了重复的劳动,效率自然是高。而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是fastcgi的对进程的管理。

 

下面谈谈php-fpm

由上面可知,CGI是一种协议,fastcgi,就是为了提高性能的一种进程管理,如果有很多进程的话,就需要一个管理器来管理这些进程,那么php-fpm就是fastcgi进程的管理器

 

PHP5.3之后,已经收了php-fpm

你可能感兴趣的:(浅析php-fpm和fastcgi的关系)