首頁  >  文章  >  後端開發  >  linux - php-fpm.conf參數process_control_timeout是什麼意思?

linux - php-fpm.conf參數process_control_timeout是什麼意思?

WBOY
WBOY原創
2016-10-10 11:56:251380瀏覽

透過百度,閱讀原文,翻譯中文
process_control_timeout = 0

設定子程序接受主程序復用訊號的超時時間. 可用單位: s(秒), m(分), h(小時), 或 d(天) 預設單位: s(秒). 預設值: 0

子程序接受主程序復用信號,復用信號是什麼意思?
當一個url請求nginx處理交給php-fpm處理,這整個過程是一個什麼原理?一個php-fpm進程裡能包括多個請求?有沒有高手跟我講講.非常感謝.

回覆內容:

透過百度,閱讀原文,翻譯中文
process_control_timeout = 0

設定子程序接受主程序復用訊號的逾時時間. 可用單位: s(秒), m(分), h(小時), 或 d(天) 預設單位: s(秒). 預設值: 0

子程序接受主程序復用信號,復用信號是什麼意思?
當一個url請求nginx處理交給php-fpm處理,這整個過程是一個什麼原理?一個php-fpm進程裡能包括多個請求?有沒有高手跟我講講.非常感謝.

先來簡單談談PHP請求處理過程。
Nginx與PHP的交互依賴於CGI接口,因為兩者都實現了CGI接口,所以Nginx可以把收到的請求交給PHP,並從PHP獲得相應的結果回傳給客戶端。
最基本的CGI實作是每次請求都新建一個PHP進程,處理完成後關閉進程,這種方式會消耗很多的資源在進程的啟動和關閉上,所以效率並不高。
進而出現了FastCGI這種實作方式,也就是啟動一個進程後讓它處理多個請求再關閉,這種方式就是解決每次請求都開啟和關閉進程的消耗的。但FastCGI有個缺點,就是因為一個行程只能同時處理一個請求,如果同時收到多個請求,它們只能排隊等待FastCGI進程的處理。
解決FastCGI只能同時處理一個請求的方式很簡單,就是開啟多個FastCGI進程。不過開啟多個FastCGI進程的就存在對這些進程的管理問題,例如究竟要開多少個進程,怎麼會根據需要分配請求到這些進程上等等。而PHP-FPM就是這樣一個管理FastCGI進程的管理程序。 Nginx先將請求傳遞給PHP-FPM,再由PHP-FPM選擇適當的FastCGI處理進程進行處理。

在PHP-FPM將請求傳遞給FastCGI處理進程的時候,就牽涉到進程復用了。原則上,PHP-FPM會選擇空閒的FastCGI進程去處理請求,在處理之前,PHP-FPM會發送進程復用訊號給FastCGI進程,用來讓FastCGI進程準備好接受請求並處理。但是,FastCGI進程並不總是能夠處理請求,也就是不能夠回應進程復用訊號(比如說出現假死的情況),所以這個參數就表示了PHP-FPM留給FastCGI進程多久去回應進程復用訊號,如果超時了,PHP-FPM會選擇其他的方式(例如使用其他的FastCGI進程)去處理請求。

fpm 全名為 fastcgi process manager 是專門管理fastcgi的

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:php抽獎演算法下一篇:php抽獎演算法