PHP5.4或引入PHP-FPM nginx運(yùn)行PHP更輕松
前面我曾介紹過Nginx + PHP-FPM + APC=絕妙的組合,最近有消息稱,PHP5.4將很有可能把PHP-FPM ( PHP FastCGI進(jìn)程管理器 )補(bǔ)丁包含在內(nèi)核里。這個(gè)新聞對(duì)于在nginx服務(wù)器平臺(tái)上運(yùn)行PHP的人們來說是一個(gè)極大地驚喜。或許你會(huì)有這樣的疑問:“PHP-FPM是什么東西?我們?yōu)槭裁匆P(guān)注它?”
PHP-FPM是為PHP內(nèi)核編寫的補(bǔ)丁,用來根據(jù)需要處理FastCGI進(jìn)程的啟動(dòng),停止以及重啟。這是非常關(guān)鍵的功能,因?yàn)閚ginx只能通過FastCGI實(shí)現(xiàn)同PHP的接口。nginx不能像Apache那樣把所有的PHP環(huán)境加載到自身。nginx通過FastCGI運(yùn)行PHP比Apache包含PHP環(huán)境有明顯的優(yōu)勢(shì):
◆較低的內(nèi)存占用率(因?yàn)閚ginx單獨(dú)運(yùn)行時(shí)不用加載整個(gè)PHP環(huán)境)。
◆輕松地管理用戶權(quán)限( 因?yàn)镻HP可以在你的服務(wù)器進(jìn)程中管理不同的用戶)。
◆當(dāng)PHP崩潰時(shí),nginx可以照常運(yùn)行。
它的缺點(diǎn)是,相比之下需要安裝及設(shè)置mod_php,nginx,PHP和FastCGI。在過去,這種安裝工作需要從LightTPD工程中增選spawn-fcgi腳本,然后使用它啟動(dòng)FastCGI進(jìn)程。可是這種安裝存在一些問題:它很脆弱(當(dāng)進(jìn)程停止之后可能無法正常重啟)而且這種安裝方法非常繁瑣。安裝并配置好nginx之后你還需要下載LightTPD,針對(duì)性地設(shè)置腳本,將其設(shè)置為自動(dòng)啟動(dòng),然后保障這些同時(shí)正常地運(yùn)行。如果你習(xí)慣于“拿來主義”,開箱即用mod_php,那么也許會(huì)讓你確信nginx是個(gè)劣質(zhì)品,尤其是當(dāng)你剛剛升級(jí)了服務(wù)器替換了原來的精簡(jiǎn)的平臺(tái)的時(shí)候。
使用PHP-FPM。這個(gè)補(bǔ)丁會(huì)把FastCGI進(jìn)程管理功能嵌入到PHP中。所以當(dāng)你使用FPM補(bǔ)丁編譯PHP并且選定了enalbe-fpm選項(xiàng)的時(shí)候,nginx會(huì)根據(jù)需要控制PHP進(jìn)程的啟動(dòng)和停止。這樣就省去了以前繁瑣的配置步驟了。當(dāng)然,對(duì)于喜歡省事兒的網(wǎng)站開發(fā)人員來說手動(dòng)配置補(bǔ)丁和編譯PHP代碼還是有點(diǎn)繁瑣。現(xiàn)在我要告訴大家此新聞給我們帶來的驚喜:PHP5.4將會(huì)把FPM補(bǔ)丁直接包含到PHP工程的內(nèi)核里面!
這意味著你只需要下載PHP就能編譯了。你不再需要設(shè)置enalbe-fpm,不再需要考慮如何與nginx同步的問題,還有努力采取與Apache相同設(shè)置的問題。
也許你曾經(jīng)嘗試過在nginx平臺(tái)上運(yùn)行PHP,而且對(duì)其繁破口大罵過。我要向你鄭重建議去試一下PHP-FPM。雖然它現(xiàn)在仍然存在一點(diǎn)問題,但是它時(shí)時(shí)刻刻在進(jìn)步的。在此期間,也許你能體會(huì)到同在街頭玩耍的小孩子突然得到一個(gè)超酷的玩具一般的驚喜。
【編輯推薦】