phpphpfpm-九游会j9娱乐平台
1. fpm看這一篇就夠了
fpm是php fastcgi運行模式的進程管理器,其主要功能在於管理php處理請求的進程,以優化伺服器性能。fastcgi協議作為web伺服器(如nginx、apache)和處理程序(如php)之間的通信協議,用於在應用層實現兩者間的交互。當php處理完請求後,通過fastcgi協議將解析結果返回給web伺服器,最終由web伺服器將內容發送給用戶。
fpm採用多進程模型,由master進程和多個worker進程組成。master進程啟動後創建socket,但不直接處理請求,而是由fork出的worker進程處理請求。master進程負責fork和殺掉worker進程,以動態管理進程數量。在master進程fork出worker後,會循環事件列表,worker進程則不斷接受請求,解析fastcgi協議數據,執行php腳本,並關閉請求。整個worker處理請求的過程包括等待請求、解析請求、請求初始化、執行php腳本和關閉請求等步驟。
在處理請求時,worker進程會記錄其當前所處的階段,如等待請求階段、讀取fastcgi請求header階段、獲取請求信息階段、執行php腳本階段和請求處理完成階段,以方便管理進程狀態。
master進程主要負責進程管理。它在啟動後不再返回,進入事件循環,處理io及定時器事件,以動態控制worker的數量。master進程會根據配置文件中的pm參數,選擇靜態模式、動態模式或按需模式來管理worker進程。靜態模式下,master在啟動時根據配置參數fork出固定數量的worker進程。動態模式下,master根據配置參數初始化一定數量的worker進程,並在請求增多時增加worker進程,減少時減少worker進程。按需模式下,master不預先分配worker進程,而是等到有請求時才通知master進程fork worker進程,處理完成後worker進程不會立即退出,當空閑時間超過配置參數後才退出。
除了進程管理,master還處理信號事件、進程檢查定時器和執行超時檢查定時器。信號事件允許master響應系統信號,如sigint、sigterm、sigquit等,以便在接收到退出信號時通知所有worker退出,並確保master正常退出。進程檢查定時器用於定期檢查worker進程數量,動態調整進程數量以優化資源使用。執行超時檢查定時器用於監控worker處理請求的時間,如果請求處理時間超過設定的閾值,master將向worker進程發送kill -term信號以終止進程。
綜上所述,fpm作為php fastcgi運行模式的進程管理器,通過多進程模型和動態管理策略,優化了php處理請求的性能,提高了伺服器響應速度和資源利用率。