首頁 後端開發 php教程 對於PHP-FPM參數的理解

對於PHP-FPM參數的理解

Aug 21, 2019 am 10:01 AM
fpm

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 &#39;max_execution_time&#39; ini option
; does not stop script execution for some reason. A value of &#39;0&#39; means &#39;off&#39;.
; 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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

解決Ubuntu缺少PHP-FPM的問題 解決Ubuntu缺少PHP-FPM的問題 Mar 08, 2024 pm 09:45 PM

解決Ubuntu缺少PHP-FPM的問題,需要具體程式碼範例在Ubuntu系統中,安裝和設定PHP-FPM是常見的操作,但有時候在安裝過程中會出現缺少PHP-FPM的問題。本文將詳細介紹如何解決這個問題,並提供具體的程式碼範例來幫助您完成安裝和設定。 1.檢查PHP-FPM是否已安裝首先,使用下列指令檢查系統中是否已經安裝了PHP-FPM:dpkg-l|gr

解決Linux環境下PHP7-FPM啟動失敗的方法 解決Linux環境下PHP7-FPM啟動失敗的方法 Mar 11, 2024 pm 02:12 PM

解決Linux環境下PHP7-FPM啟動失敗的方法在使用Linux伺服器建立網站或應用程式時,PHP7-FPM是常用的PHPFastCGI進程管理器。但是有時會遇到PHP7-FPM啟動失敗的問題,這可能會導致網站無法正常存取。在本文中,我們將介紹一些常見的解決方法,並提供具體的程式碼範例。希望這些資訊能幫助你快速解決PHP7-FPM啟動失敗的情況。檢查

如何應對Linux下PHP7-FPM啟動失敗的狀況 如何應對Linux下PHP7-FPM啟動失敗的狀況 Mar 10, 2024 pm 09:54 PM

Linux下的PHP7-FPM是一種常見的PHPFastCGI進程管理器,通常用來處理PHP程式的運作。然而有時在配置或部署過程中,可能會遇到PHP7-FPM啟動失敗的情況,導致網站無法正常存取。在這種情況下,我們需要採取一些措施來應對和解決問題。 1.檢查錯誤日誌首先要查看PHP7-FPM的錯誤日誌,通常錯誤日誌位於/var/log/php7-fpm

nginx平滑重啟和FPM平滑重啟是什麼 nginx平滑重啟和FPM平滑重啟是什麼 May 23, 2023 pm 09:08 PM

平滑重啟GR是GracefulRestart(平滑重啟)的簡稱,是確保在協定重新啟動時轉送業務不會中斷的機制。 GR機制的核心在於:當某設備進行協定重新啟動時,能夠通知其周邊設備在一定時間內將到該設備的鄰居關係和路由保持穩定。在協定重新啟動後,週邊設備協助其進行資訊(包括支援GR的路由/MPLS相關協定所維護的各種拓樸、路由和會話資訊)同步,在盡量短的時間內使該設備恢復到重新啟動前的狀態。在整個協定重新啟動過程中不會產生路由振盪,封包轉送路徑也沒有任何改變,整個系統可以不間斷地轉送資料。這個過程即稱為平滑重啟。

nginx+php-fpm服務HTTP狀態碼502怎麼解決 nginx+php-fpm服務HTTP狀態碼502怎麼解決 May 21, 2023 am 08:07 AM

我們的一個web項目,由於新上城市增多,導致訪問量增大,db壓力增大,作為提供接口的業務方,最近被下游反饋大量請求“502”。 502,badgateway,通常都是upstream(這裡就是php)出錯,對於php,造成502的原因常見的就是腳本執行超過timeout設定時間,或者timeout設定過大,導致php進程長時間不能被釋放,沒有空閒worker進程來接客。我們的專案就是php執行時間設定過短導致的,對於這種情況,可以先適當增大php的執行時間,先保證清除502,優化的事情畢竟要花更多

解決Ubuntu系統中缺少PHP-FPM的挑戰 解決Ubuntu系統中缺少PHP-FPM的挑戰 Mar 08, 2024 pm 02:48 PM

在解決Ubuntu系統中缺少PHP-FPM的挑戰時,需要遵循一系列步驟來安裝和設定PHP-FPM。 PHP-FPM(FastCGIProcessManager)是一個處理動態頁面請求的進程管理器,能夠提高PHP應用程式的效能和穩定性。以下將詳細介紹如何在Ubuntu系統上安裝和設定PHP-FPM,並提供具體的程式碼範例來幫助解決這項挑戰。第一步:更新系統在進

Nginx中使用PHP-FPM時記錄PHP錯誤日誌怎麼配置 Nginx中使用PHP-FPM時記錄PHP錯誤日誌怎麼配置 May 15, 2023 am 08:58 AM

nginx與apache不一樣,在apache中可以直接指定php的錯誤日誌,那樣在php執行中的錯誤訊息就直接輸入到php的錯誤日誌中,可以方便查詢。在nginx事情就變成這樣:nginx只對頁面的存取做access記錄日誌了。不會有php的errorlog資訊。 nginx把對php的請求發給php-fpmfastcgi進程來處理,預設的php-fpm只會輸出php-fpm的錯誤訊息,在php-fpm的errorslog裡也看不到php的errorlog。原因是php-fpm的設定檔php

Linux伺服器上PHP7-FPM啟動異常的處理技巧 Linux伺服器上PHP7-FPM啟動異常的處理技巧 Mar 11, 2024 am 11:09 AM

在Linux伺服器上使用PHP7-FPM作為伺服器端腳本運行環境是常見的做法,但有時候可能會遇到啟動異常的情況。本文將介紹一些處理PHP7-FPM啟動異常的技巧,同時提供一些具體的程式碼範例,幫助讀者更好地解決問題。 1.檢查設定檔PHP7-FPM的設定檔通常位於/etc/php/7.x/fpm/pool.d/目錄下,確保設定檔中各項配置正確無誤。可以使

See all articles