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

來源:互聯網
上載者:User
通過百度,閱讀原文,翻譯中文
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的

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.