对于PHP-FPM参数的理解-php教程

资源魔 19 0
process_control_timeout

英文诠释

process_control_timeout mixedTime limit for child processes to wait for a reaction on signals from master.
Available units: s(econds), m(inutes), h(ours), or d(ays) Default Unit: seconds. Default value: 0.

中文诠释

process_control_timeout
 mixed
设置子过程承受主过程复用旌旗灯号的超不时间。可用单元:s(秒),m(分),h(小时)或许 d(天)。默许单元:s(秒)。默许值:0(封闭)。

中文翻译有个没有失当之处,英文诠释里并无指明该旌旗灯号是复用旌旗灯号。

我的了解:

解决申请

准则上,php-fpm会抉择闲暇的fastcgi过程行止理申请,正在解决以前,php-fpm会给fastcgi发送旌旗灯号,用来让fastcgi过程预备好承受申请解决。然而fastcgi过程其实不老是可以解决申请,也就是不克不及老是呼应该旌旗灯号(比方呈现假死的状况),这时候候就需求设定php-fpm留给fastcgi过程呼应旌旗灯号的工夫,假如超时了,php-fpm会想其余方法(例如抉择其余fastcgi过程),这个就process_control_timeout参数的作用。

php-fpm进行reload

process_control_timeout = 10

<?php 
sleep(50);echo 1;sleep(20);    
//不这个sleep,reload会立刻失效echo 2;

当阅读器拜访http://localhost时,进行php-fpm滑润圆滑reload,fastcgi旌旗灯号收到封闭过程旌旗灯号后,第一个sleep函数会间接前往,然而第二个sleep仍正在执行。因而,php-fpm会被这一个旧fastcgi过程卡10s,超越后能力实现滑润圆滑重启

request_terminate_timeout

正在php-fpm.conf文件中的形容以下:

; The timeout for serving a single request after which the worker process will
; be killed. This option should be used when the 'max_execution_time' ini option
; does not stop script execution for some reason. A value of '0' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
;request_terminate_timeout = 0

翻译过去就是:
request_terminate_timeout参数设置了解决单个申请的超不时间,过了之后,该worker过程就会被kill掉。这个选项应该正在php.ini文件的max_execution_time选项因为某种缘由不中止剧本的运转下应用。默许值为0,示意该选项为封闭状态。

正如下面所说,request_terminate_timeout设定的是申请的超不时间,而php.ini设置装备摆设中的max_execution_time依据手册以下的诠释,是剧本被容许的最年夜执行工夫。

max_execution_time
 integer
这设置了剧本被解析器停止以前容许的最年夜执行工夫,单元秒。 这有助于避免写患上欠好的剧本占尽效劳器资本。 默许设置为 30。 从饬令交运行 PHP 时,默许设置为 0。
最年夜执行工夫没有会影响零碎挪用以及零碎操作等。更多细节参见 set_time_limit()。
正在 平安模式 下你不克不及经过 ini_set() 来修正此设置。 惟一的处理办法是封闭平安模式或许正在 php.ini中修正工夫限度。
你的 web 效劳器也能够有其余超时设置,也有可能中缀 PHP 的执行。 Apache 有一个 Timeout 指令,IIS 有一个 CGI 超时性能。 他们默许都是 300 秒。更多详细信息参见你的 web 效劳器的文档。

区分以下:

超时后,request_terminate_timeout会前往502Bad Gateway了,而max_execution_time会抛出Fatal Error

max_execution_time没有包罗诸如应用system()sleep()的零碎挪用、流操作、数据库操作等的工夫,以是比拟鸡肋,而request_terminate_timeout会蕴含顺序的完好申请工夫。

另外,开启request_terminate_timeout其实不会让max_execution_time生效,先抵达谁的超不时间谁起作用。

更过相干PHP成绩请拜访PHP中文网:https://www.php.cn/

以上就是关于PHP-FPM参数的了解的具体内容,更多请存眷资源魔其它相干文章!

标签: php开发教程 php开发资料 php开发自学 FPM

抱歉,评论功能暂时关闭!