溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

什么是PHP-FPM參數(shù)

發(fā)布時(shí)間:2020-03-27 11:45:52 來(lái)源:億速云 閱讀:135 作者:小新 欄目:編程語(yǔ)言

什么是PHP-FPM參數(shù)?很多人都不太了解,今天小編為了讓大家更加了解PHP-FPM參數(shù),所以給大家總結(jié)了以下內(nèi)容,一起往下看吧。

                                                           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
設(shè)置子進(jìn)程接受主進(jìn)程復(fù)用信號(hào)的超時(shí)時(shí)間??捎脝挝唬簊(秒),m(分),h(小時(shí))或者 d(天)。默認(rèn)單位:s(秒)。默認(rèn)值:0(關(guān)閉)。

中文翻譯有個(gè)不恰當(dāng)?shù)牡胤?,英文解釋里并沒(méi)有指明該信號(hào)是復(fù)用信號(hào)。

什么是PHP-FPM參數(shù)

我的理解:

處理請(qǐng)求

原則上,php-fpm會(huì)選擇空閑的fastcgi進(jìn)程去處理請(qǐng)求,在處理之前,php-fpm會(huì)給fastcgi發(fā)送信號(hào),用來(lái)讓fastcgi進(jìn)程準(zhǔn)備好接受請(qǐng)求處理。但是fastcgi進(jìn)程并不總是能夠處理請(qǐng)求,也就是不能總是響應(yīng)該信號(hào)(比如出現(xiàn)假死的情況),這時(shí)候就需要設(shè)定php-fpm留給fastcgi進(jìn)程響應(yīng)信號(hào)的時(shí)間,如果超時(shí)了,php-fpm會(huì)想其他辦法(例如選擇其他fastcgi進(jìn)程),這個(gè)就process_control_timeout參數(shù)的作用。

php-fpm進(jìn)行reload

process_control_timeout = 10

<?php 
sleep(50);echo 1;sleep(20);    
//沒(méi)有這個(gè)sleep,reload會(huì)立即生效echo 2;

當(dāng)瀏覽器訪問(wèn)http://localhost時(shí),進(jìn)行php-fpm平滑reload,fastcgi信號(hào)收到關(guān)閉進(jìn)程信號(hào)后,第一個(gè)sleep函數(shù)會(huì)直接返回,但是第二個(gè)sleep仍在執(zhí)行。因此,php-fpm會(huì)被這一個(gè)舊fastcgi進(jìn)程卡10s,超過(guò)后才能完成平滑重啟

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

翻譯過(guò)來(lái)就是:
request_terminate_timeout參數(shù)設(shè)置了處理單個(gè)請(qǐng)求的超時(shí)時(shí)間,過(guò)了之后,該worker進(jìn)程就會(huì)被kill掉。這個(gè)選項(xiàng)應(yīng)該在php.ini文件的max_execution_time選項(xiàng)由于某種原因沒(méi)有停止腳本的運(yùn)行下使用。默認(rèn)值為0,表示該選項(xiàng)為關(guān)閉狀態(tài)。

正如上面所說(shuō),request_terminate_timeout設(shè)定的是請(qǐng)求的超時(shí)時(shí)間,而php.ini配置中的max_execution_time根據(jù)手冊(cè)如下的解釋?zhuān)悄_本被允許的最大執(zhí)行時(shí)間。

max_execution_time
 integer
這設(shè)置了腳本被解析器中止之前允許的最大執(zhí)行時(shí)間,單位秒。 這有助于防止寫(xiě)得不好的腳本占盡服務(wù)器資源。 默認(rèn)設(shè)置為 30。 從命令行運(yùn)行 PHP 時(shí),默認(rèn)設(shè)置為 0。
最大執(zhí)行時(shí)間不會(huì)影響系統(tǒng)調(diào)用和系統(tǒng)操作等。更多細(xì)節(jié)參見(jiàn) set_time_limit()。
在 安全模式 下你不能通過(guò) ini_set() 來(lái)修改此設(shè)置。 唯一的解決方法是關(guān)閉安全模式或者在 php.ini中修改時(shí)間限制。
你的 web 服務(wù)器也可以有其他超時(shí)設(shè)置,也有可能中斷 PHP 的執(zhí)行。 Apache 有一個(gè) Timeout 指令,IIS 有一個(gè) CGI 超時(shí)功能。 他們默認(rèn)都是 300 秒。更多具體信息參見(jiàn)你的 web 服務(wù)器的文檔。

區(qū)別如下:

超時(shí)后,request_terminate_timeout會(huì)返回502Bad Gateway了,而max_execution_time會(huì)拋出Fatal Error。

max_execution_time不包括諸如使用system(),sleep()的系統(tǒng)調(diào)用、流操作、數(shù)據(jù)庫(kù)操作等的時(shí)間,所以比較雞肋,而request_terminate_timeout會(huì)包含程序的完整請(qǐng)求時(shí)間。

另外,開(kāi)啟request_terminate_timeout并不會(huì)讓max_execution_time失效,先到達(dá)誰(shuí)的超時(shí)時(shí)間誰(shuí)起作用。

以上就是什么是PHP-FPM參數(shù)的詳細(xì)內(nèi)容了,看完之后是否有所收獲呢?如果如果想了解更多,歡迎來(lái)億速云行業(yè)資訊!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI