php-fpm
PHP-FPM(FastCGI 進程管理器)用于替換 PHP FastCGI 的大部分附加功能,對于高負載網站是非常有用的。
它的功能包括:
- 支持平滑停止/啟動的高級進程管理功能;
- 可以工作于不同的 uid/gid/chroot 環境下,并監聽不同的端口和使用不同的 php.ini 配置文件(可取代 safe_mode 的設置);
- stdout 和 stderr 日志記錄;
- 在發生意外情況的時候能夠重新啟動并緩存被破壞的 opcode;
- 文件上傳優化支持;
- "慢日志" - 記錄腳本(不僅記錄文件名,還記錄 PHP backtrace 信息,可以使用 ptrace或者類似工具讀取和分析遠程進程的運行數據)運行所導致的異常緩慢;
- fastcgi_finish_request() - 特殊功能:用于在請求完成和刷新數據后,繼續在后臺執行耗時的工作(錄入視頻轉換、統計處理等);
- 動態/靜態子進程產生;
- 基本 SAPI 運行狀態信息(類似Apache的 mod_status);
- 基于 php.ini 的配置文件。
工作原理:
它的工作原理大概為:
php-fpm啟動->生成n個fast-cgi協議處理進程->監聽一個端口等待任務
用戶請求->web服務器接收請求->請求轉發給php-fpm->php-fpm交給一個空閑進程處理
->進程處理完成->php-fpm返回給web服務器->web服務器接收數據->返回給用戶
nginx+php-fpm 就是用的以上的方法