欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

linux - php-fpm.conf参数process_control_timeout是什么意思?

程序员文章站 2022-05-25 19:07:20
...
通过百度,阅读原文,翻译中文
process_control_timeout = 0

设置子进程接受主进程复用信号的超时时间. 可用单位: s(秒), m(分), h(小时), 或者 d(天) 默认单位: s(秒). 默认值: 0

子进程接受主进程复用信号,复用信号是什么意思?
当一个url请求nginx处理交给php-fpm处理,这整个过程是一个什么原理?一个php-fpm进程里能包括多个请求?有没有高手给我讲讲.非常感谢.

回复内容:

通过百度,阅读原文,翻译中文
process_control_timeout = 0

设置子进程接受主进程复用信号的超时时间. 可用单位: s(秒), m(分), h(小时), 或者 d(天) 默认单位: s(秒). 默认值: 0

子进程接受主进程复用信号,复用信号是什么意思?
当一个url请求nginx处理交给php-fpm处理,这整个过程是一个什么原理?一个php-fpm进程里能包括多个请求?有没有高手给我讲讲.非常感谢.

先来简单谈谈PHP请求处理过程吧。
Nginx与PHP的交互依赖于CGI接口,因为两者都实现了CGI接口,所以Nginx可以把收到的请求交给PHP,并从PHP获得相应的结果回传给客户端。
最基本的CGI实现是每次请求都新建一个PHP进程,处理完成后关闭进程,这种方式会消耗很多的资源在进程的启动和关闭上,所以效率并不高。
进而出现了FastCGI这种实现方式,也就是启动一个进程后让它处理多个请求再关闭,这种方式就是解决每次请求都打开和关闭进程的消耗的。但FastCGI有个缺点,就是因为一个进程只能同时处理一个请求,如果同时收到多个请求,它们只能排队等待FastCGI进程的处理。
解决FastCGI只能同时处理一个请求的方式很简单,就是开启多个FastCGI进程。不过开启多个FastCGI进程的就存在对这些进程的管理问题,比如究竟要开多少个进程,怎么根据需要分配请求到这些进程上等等。而PHP-FPM就是这样一个管理FastCGI进程的管理程序。Nginx先将请求传递给PHP-FPM,再由PHP-FPM选择合适的FastCGI处理进程进行处理。

在PHP-FPM将请求传递给FastCGI处理进程的时候,就涉及到进程复用了。原则上,PHP-FPM会选择空闲的FastCGI进程去处理请求,在处理之前,PHP-FPM会发送进程复用信号给FastCGI进程,用来让FastCGI进程准备好接受请求并处理。但是,FastCGI进程并不总是能够处理请求,也就是不能够响应进程复用信号(比如说出现假死的情况),所以这个参数就表示了PHP-FPM留给FastCGI进程多久时间去响应进程复用信号,如果超时了,PHP-FPM会选择其他的方式(例如使用其他的FastCGI进程)去处理请求。

fpm 全称 fastcgi process manager 是专门管理fastcgi的

相关标签: nginx linux php