提升PHP執(zhí)行速度全攻略(上)
發(fā)表時(shí)間:2024-01-27 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]PHP的優(yōu)點(diǎn)之一是速度很快,對于一般的網(wǎng)站應(yīng)用,可以說是已經(jīng)足夠了。不過如果站點(diǎn)的訪問量很高、帶寬窄或者其它的因素令服務(wù)器產(chǎn)生性能瓶頸的時(shí)候,你可能得想想其它的辦法來進(jìn)一步提高PHP的速度了。這篇文章將從幾個(gè)方面介紹如何做到這一點(diǎn),從而令用戶瀏覽的時(shí)候更加“爽”。 代碼優(yōu)化 在這里并不想再次告訴你...
PHP的優(yōu)點(diǎn)之一是速度很快,對于一般的網(wǎng)站應(yīng)用,可以說是已經(jīng)足夠了。不過如果站點(diǎn)的訪問量很高、帶寬窄或者其它的因素令服務(wù)器產(chǎn)生性能瓶頸的時(shí)候,你可能得想想其它的辦法來進(jìn)一步提高PHP的速度了。這篇文章將從幾個(gè)方面介紹如何做到這一點(diǎn),從而令用戶瀏覽的時(shí)候更加“爽”。
代碼優(yōu)化
在這里并不想再次告訴你如何寫更干凈的代碼,這一點(diǎn)我想每個(gè)人都清楚,在需要速度的時(shí)候,你可能已經(jīng)在PHP源代碼的優(yōu)化上面做了不少的工作,這里所提出的是,這個(gè)煩瑣的工作可以交由其它工具來完成。這就是Zend Optimizer,此程序可以從Zend Technologies的網(wǎng)站(http://www.zend.com/)免費(fèi)得到。它的原理很簡單,通過檢測Zend引擎產(chǎn)生的中間代碼,并且優(yōu)化它來得到更高的執(zhí)行速度。我認(rèn)為優(yōu)化代碼是一項(xiàng)頗煩瑣的工作,而且優(yōu)化后的代碼可能變得難以理解,尤其是當(dāng)你放下該P(yáng)HP程序一段時(shí)間后,突然間客戶要求你做一些修改時(shí),可能你自己也不懂了;-)。因此我建議你在PHP的源代碼較為復(fù)雜的時(shí)候,用Zend Optimizer來做這個(gè)優(yōu)化的工作,好處是它不會(huì)令你的代碼變得復(fù)雜難懂。
安裝Zend Optimizer是非常簡單的。只要根據(jù)你使用的平臺(tái),下載相關(guān)的預(yù)編譯庫,并且在你的php.ini中加入兩行,重新啟動(dòng)你的web服務(wù)器就行了!
zend_optimizer.optimization_level=15zend_extension="/path/to/ZendOptimizer.so" zend_loader.enable=Off
你可能有點(diǎn)奇怪,不是說兩行嗎,怎么變成三行了。不過第三行是可選的,看來禁止這個(gè)zend_loader將會(huì)令優(yōu)化的速度更快,因此不妨在你的php.ini文件中多加這一行。要注意的是:只有在你不使用Zend Encoder Runtime的時(shí)候,才可以禁止zend_loader,關(guān)于Zend Encoder Runtime,還會(huì)在下文提到。
要更快嗎?使用cache(緩沖)吧
如果你的PHP應(yīng)用還需要更快的速度,下一個(gè)辦法是緩沖。要實(shí)現(xiàn)這一點(diǎn),有幾種不同的方式。我自己就試用過Zend Cache(評測版本),APC和Afterburner Cache。
以上提到的都是“緩沖模塊”。它們的原理都差不多,在php文件被首次請求的時(shí)候,通過將你的PHP源代碼的中間代碼存儲(chǔ)在web服務(wù)器的內(nèi)存中,對于以后同樣的請求,都直接提供內(nèi)存中的“編譯”版本。由于它可以令磁盤的訪問達(dá)到最小化,因此這個(gè)方法確實(shí)可以極大地提高PHP的性能。更為方便的是,當(dāng)你的PHP源代碼修改時(shí),緩沖的模塊可以察覺到這些變化,并且重新載入一樣,因此你不必?fù)?dān)心客戶得到的是舊版本的程序。這些緩沖的模塊確實(shí)不錯(cuò),但是我應(yīng)該選用哪一種呢?下面分別介紹一下:
Zend Cache是Zend Technologies的一個(gè)商業(yè)化的產(chǎn)品(它也是免費(fèi)為我們提供PHP引擎和Zend Optimizer的公司)。它確實(shí)不錯(cuò)。在首次運(yùn)行后,你可以明顯察覺到PHP的速度得到了很大的提高,服務(wù)器的空閑資源也更多了。缺點(diǎn)是你要付費(fèi)購買它,但就性價(jià)比來說,還是非常值得的。
Afterburner Cache是Bware Technologies(bwcache.bware.it)提供的免費(fèi)緩沖模塊。當(dāng)前還只是beta版,它所做的工作看來與Zend Cache差不多,不過性能的提高就比不上Zend Cache,而且現(xiàn)有的版本不能和Zend Optimizer一起工作,不過它是免費(fèi)的。
APC(Alternative PHP Cache)是由Community Connect(apc.communityconnect.com)提供的另一個(gè)免費(fèi)模塊。它的工作很穩(wěn)定,速度也有不少的提高,要注意的是,我還沒有找到一個(gè)官方的測試數(shù)據(jù),這些只是在我的應(yīng)用上作測試,因此不能下一個(gè)結(jié)論。