PHP-FPM 即 PHP FastCGI的程式管理器。
CGI 的意思是 ==通用閘道器介面== ,是 Web 伺服器呼叫外部程式時使用的一種服務端應用的規範。
CGI 針對每個 HTTP 請求都會 fork 一個新的程式來進行處理(解析配置檔案、初始化執行環境、處理請求),然後把這個程式處理完的結果通過 Web 服務轉發給使用者,剛剛 fork 的新程式也隨之退出,如果下次使用者再請求動態資源,Web 伺服器又再次 fork 一個新的程式,如此周而復始迴圈往復。
FastCGI 是 CGI 的升級版本,為提升 CGI 的效能而生。FastCGI 會先 fork 一個新的 master 程式,解析配置檔案,初始化執行環境,然後再 fork 多個 worker 程式(類似於 nginx),當 HTTP 請求過來時,master 會將請求傳遞給一個 worker 程式,然後再接收下一個請求,這樣的話只需要解析一次配置檔案,初始化一次執行環境,每次請求不會阻塞,導不會致請求停滯。這樣大大提高了請求效率,可以處理高併發環境下的業務場景。Master 還會更根據配置預先啟動幾個 Worker 程式進行等待,當Worker 程式過多,Master 也會根據配置檔案設定銷燬掉多餘的 Worker,這樣提高了效能,也節約了系統資源。
PHP-FPM 負責管理一個程式池來處理來自 Web 伺服器的 HTTP 動態請求,在PHP-FPM 中,Master 程式負責與 Web 伺服器進行通訊,接收 HTTP 請求,再將請求轉發給 worker 程式處理。Worker 程式主要負責動態執行 PHP 程式碼,處理完成後,將處理結果返回給 Web 伺服器,再由 Web 伺服器將結果傳送給客戶端,這就是 PHP-FPM 的工作原理。
資料:
www.php.net/manual/zh/install.fpm....
www.jianshu.com/p/6b8511e0bd88
zhuanlan.zhihu.com/p/110540192
本作品採用《CC 協議》,轉載必須註明作者和本文連結