首頁 > 網站優化方法 > 讓網站飛起來,PHP加速探索
 一、簡介
本文嘗試對PHP程序加速的各個方面進行探索,包括必要性以及從不同角度采取的具體措施。希望有助于讀者了解PHP程序加速,并應用于實際。
二、是否需要加速?
1、這個問題聽起來有點愚蠢。在這個時代,很少有人會懷疑時間是最寶貴的財富,尤其是在商業市場上。程序執行越快,用戶就節約越多的時間,這樣你的程序就可以用更少的時間和服務器資源為用戶服務,從而產生更多效益。
2、我想對于大部份人(包括我自己)來說,很多WEB項目都是在很緊張的時間里完成的,通常沒有經過縝密的思考和嚴格的測試。當開始一個新的WEB項目。很多人都在構建那種“快而亂”的應用,缺乏必要的時間來調整和改良代碼,這時優化和加速就是我們必須采取的措施。
3、然而需要特別指出的是,并不是所有程序都需要加速。
4、優化已完成的代碼是很浪費時間的,最好的方法是在寫代碼的時候就注意到效率,然后完成項目后只優化確實需要優化的那部份。一般一個程序只會有少數幾個影響速度的瓶頸,將它們找出來并解決掉,程序就可以很好地運行。另外,當遇到執行效率低下的情況,首先要用大局的眼光來找出影響效率的主要因素,而不要拘泥于細節—例如數據量過大,服務器帶寬不夠,或硬件配置過低,在這樣的情況下,優化代碼于事無補。
5、另外,在沒有發現程序有明顯的執行緩慢的跡象時,就不要太吹毛求疵,為了改進一些非常細節的代碼而浪費時間。用這些時間,你可以完成另一個項目或為原來的項目完成一個擴展功能。當然你可以笑話我不夠負責,沒有把工作做得盡善盡好,我也可以說你是完美主義者:-)
6、綜上,在你決定為你的PHP程序提速之前,問問自己是否有必要。
三、如何加速?
要回答“如何加速”這個問題前,需要先回答以下兩個小問題:
你的程序慢在哪一部份?
PHP可以從哪幾個方面考慮加速?
第一個小問題顯然我無法給你答案,但我建議你用“測試腳本執行速度”的方法來解決。只有找出限制速度的瓶頸,才能考慮如何去解決。
第二個小問題我大概的答案是:代碼優化,壓縮輸出,內容緩存輸出,函數緩存輸出,加速/緩存工具軟件。如果你知道更多請告訴我:-)
下面我們來詳細地研究一下這幾個方面的相關技術。當然實際上每個方面都有無數的細節可以討論,下面的內容難免會有片面的地方,歡迎補充。
四、加速
代碼優化
掌握了PEAR::BenchMark,現在你已經知道如何測試你的代碼,知道如何判斷你的代碼是快是慢,是哪一部份比較慢。那么接下來我要說的就是如何消滅或優化那部份慢的代碼。
這一點上我個人最主要的經驗只有兩點,一是消除錯誤的或低效的循環;二是優化數據庫查詢語句。其實還存在一些其它的優化細節,比如“str_replace比ereg_replace快”、“echo比print快”等等。這些我暫時都放在一邊,稍后我會提到用緩存來對付過于頻繁的IO。
下面我們將三個功能相同,但程序寫法不同的函數的效率(消耗的時間)進行對比。