当前位置: 首页 > 后端技术 > PHP

cgi、fast-cgi和php-fpm的联系和区别

时间:2023-03-29 21:18:27 PHP

简单粗暴版:cgi(公共网关接口)||根据nginx配置文件,知道不是静态文件,需要通过以下方式处理一个PHP解析器||带有URl、POST数据、HTTP标头和查询字符串||会启动相应的CGI程序,这里是PHP解析器||PHP解析器会解析php.ini文件,初始化执行环境||处理请求,然后指定CGI以指定格式返回处理后的结果,退出处理||web服务器并将结果返回给浏览器。CGI是一种协议。Fastcgi用于提高CGI程序的性能。PHP解析器将解析php.ini文件并初始化执行环境。标准CGI将为每个请求执行这些步骤。太累了吧,每次都要处理很久。首先,Fastcgi会先启动一个master并解析配置文件,初始化执行环境,然后再启动多个worker。当请求进来时,master将其传递给worker,然后worker可以立即接受下一个请求。这样一来,避免了重复劳动,效率自然就高了。而当worker不够时,master可以根据配置预先启动几个worker等待;当然,当空闲的worker过多时,会停止一些,这样既提高了性能又节省了资源。这就是fastcgi的进程管理。那么PHP-FPM是什么?它是一个实现Fastcgi的程序,被PHP官方接受。众所周知,PHP的解释器是php-cgi。php-cgi只是一个CGI程序。它只能解析请求并返回结果,不能进行流程管理。所以有一些程序可以调度php-cgi进程。