PHP-FPM 是什麼?

柳旦旦發表於2021-01-14

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 協議》,轉載必須註明作者和本文連結
專注細節,慢慢提升自己。✍️

相關文章