您好,登錄后才能下訂單哦!
什么是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)。
我的理解:
處理請(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è)資訊!
免責(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)容。