类别:PHP教程 / 日期:2019-12-01 / 浏览:172 / 评论: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题目请接见ki4网:https://www.ki4.cn/

以上就是关于PHP-FPM参数的明白的细致内容,更多请关注ki4网别的相干文章!

打赏

感谢您的赞助~

打开支付宝扫一扫,即可进行扫码打赏哦~

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章