phpcgifastcgi
㈠ cgi/fastcgi佔用率高
在web伺服器配置中優化fastcgi配置文件參數。
php-cgi進程並沒有內存泄漏,php-cgi會在每個請求結束的時候回收腳本使用的全部內存,但是並不會釋放給操作系統,而是繼續持有以應對下一次PHP請求。這樣做大概是為了減少內存碎片化或者解決從系統申請內存之後又釋放回操作系統所需要的時間不可控問題。可是如果偶然一次PHP請求使用了諸如ftp或者zlib這樣的大內存操作,那麼將導致一大塊系統內存被php-cgi持續佔有,不能被利用。
㈡ PHP-FPM詳解
PHPFPM是PHP FastCGI進程管理器,專為管理PHP進程池設計,用於接收web伺服器請求。以下是關於PHPFPM的詳細解釋:
一、PHPFPM的誕生 PHPFPM的誕生源自PHPFastCGI的需求,是為了有效管理PHPFastCGI而出現的程序。
二、PHPFastCGI的作用 PHPFastCGI是一個解析PHP請求並返回結果的CGI程序,但它本身並不負責管理進程。
三、PHPCGI與PHPFastCGI的區別 在PHPFastCGI之前,存在PHPCGI,但由於其執行效率低下,最終被PHPFastCGI取代。
四、FastCGI與CGI的區別 CGI模式:每次請求時都需要讀取php.ini配置,初始化執行環境,耗時且重復。 FastCGI模式:允許一次啟動一個主進程,讀取一次配置,然後啟動多個工作進程。當請求來臨時,master將請求傳遞給worker,避免了重復的初始化工作,提高了效率。
五、PHPFPM的工作原理 PHPFPM創建一個主進程來控制何時以及如何將HTTP請求轉發給一個或多個子進程處理。 主進程還負責管理進程的創建與銷毀,以適應Web應用流量的變化。
六、PHPFPM的安裝與配置 安裝:PHP在5.3.3之後將PHPFPM整合到核心代碼中,無需單獨下載安裝。只需在編譯PHP源碼時添加enablefpm即可啟用PHPFPM支持。 全局配置:在CentOS中,PHPFPM的主配置文件為/etc/php7/phpfpm.conf,配置內容通常包括進程池定義。進程池定義文件通常使用www.conf作為默認配置文件,進行必要的編輯保存後,重啟PHPFPM主進程。 進程池詳細配置:請參考php.net/manual/install文檔。
七、實際應用 以nginx為例,可以配置nginx將請求轉發給PHPFPM進行處理。
以上是PHPFPM的詳細解釋,涵蓋了其誕生背景、作用、與CGI/PHPCGI的區別、工作原理、安裝與配置以及實際應用等方面。