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進程並不總是能夠處理請求,也就是不能總是回應該訊號(例如出現假死的情況),這時候就需要設定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。
system(),
sleep()的系統呼叫、流操作、資料庫操作等的時間,所以比較雞肋,而request_terminate_timeout會包含程序的完整請求時間。
以上是對於PHP-FPM參數的理解的詳細內容。更多資訊請關注PHP中文網其他相關文章!