對於PHP-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 '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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

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

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

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

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