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