如何優化php代碼 讓速度提升5倍以上


網頁訪問速度的提升,是可以通過代碼的優化來實現的。代碼的優化,並不是說代碼越少越好,而是主要看代碼的運行能力和執行效率,看其消耗CPU和內存的多少。例如Facebook近來就宣布通過代碼優化而將網站性能提高了一倍,平均訪問時間從5s降至2.5s,這個結果無疑是極其誘人的。

 

PHP是一門很多人正在使用的語言,在網站開發上PHP的使用廣泛度超過ASP和ASP.NET,看看時下流行的CMS和博客用什么語言來開發的就知道了。

 

其實PHP入門很容易,尤其是對於一個已經接觸過程序編寫的人來說,而對於沒有接觸過程序語言的菜鳥來說,學習用PHP做一個輸出hello world的網頁也很輕松。

 

然而要編寫高效率的代碼,並不是所有懂程序的人都可以編寫出來的,這需要經過多年的研究積累和經驗總結。

 

本文將給大家提煉一些PHP代碼優化的實例,利用這些優化,PHP代碼的運行能力將會大大提高,速度提升5倍以上有些情況下並不是不能出現。

 

1、echo 比 print 快

 

echo和print是PHP程序中經常使用的指令,尤其是需要調試的時候。echo和print都能輸出一段信息,但經測試發現,echo運行速度會比print快,因此在程序編寫是應使用echo而非print。但是有時候也需要用到print,echo不能完全代替print。請看[php echo()和print()有什么區別](http://www.webkaka.com/tutorial/php/2012/082016/)。

 

2、連接符用逗號而不是句號

 

php里逗號和句號都可以起到連接符的作用,關於如何優化輸出,可以看這里[如何優化php字符串echo輸出](http://www.webkaka.com/tutorial/php/2012/05207/)。

 

此外,輸出多個字符串時,用逗號代替句點來分隔字符串,速度更快。

 

3、在執行for循環之前確定最大循環數,不要每循環一次都計算最大值。

 

這條准則同樣適用於任何語言,這個是編程習慣,但這個習慣很不好,不管你使用什么語言。

 

// 在每次循環中sizeof函數都要被調用

 

for ($i = 0; $i < sizeof($post_data); $i++)

 

{

 

do_something();

 

}

 

// 您可以在循環起始部分對這個不變的量賦值

 

for ($i = 0, $size = sizeof($post_data); $i < $size; $i++)

 

{

 

do_something();

 

}

 

4、使用選擇分支語句(譯注:即switch case)好於使用多個if,else if語句。

 

if else if 的使用非常普遍,在其他語言里也一樣,這個寫法好像更符合人的說話習慣,但是在程序里這樣寫並不太好,它在效率上比switch case要低。所以,一旦程序里需要多個判斷時,就應該用switch case而不要再用if else if else if這樣。

 

5、數據庫連接當使用完畢時應關掉

 

在操作數據庫時,很多程序員往往忘記關掉數據庫連接,或許他們沒有這個習慣。數據庫連接是需要消耗內存為代價的,連接數越多內存消耗就越多,所以在實際應用中都必須及時關閉不需要用到的連接,以釋放內存,緩解服務器壓力。

 

6、錯誤消息代價昂貴

 

錯誤消息一般用於調試,它的執行效率其實是很低的,速度上會比直接運行慢很多。所以,在程序不需要抓取錯誤消息時,就不要用。

 

7、局部變量要合理使用

 

盡量不要在for循環中使用函數,比如for ($x=0; $x prop++)要比遞增一個局部變量慢3倍。

 

遞增一個未預定義的局部變量要比遞增一個預定義的局部變量慢9至10倍。

 

僅定義一個局部變量而沒在函數中調用它,同樣會減慢速度(其程度相當於遞增一個局部變量)。PHP大概會檢查看是否存在全局變量。

 

8、用單引號代替雙引號來包含字符串

 

實踐證明,用單引號代替雙引號來包含字符串,這樣做會更快一些。

 

因為PHP會在雙引號包圍的字符串中搜尋變量,單引號則不會。當然,只有當你不需要在字符串中包含變量時才可以這么做。更多分析[請看實例分析php單引號和雙引號的區別](http://www.webkaka.com/tutorial/php/2012/092718/)。

 

9、mod_zip你用了嗎

 

mod_zip可作為Apache模塊,用來即時壓縮你的數據,並可讓數據傳輸量降低80%。

 

10、緩存的使用

 

除非腳本可以緩存,否則每次調用時都會重新編譯一次。引入一套PHP緩存機制通常可以提升25%至100%的性能,以免除編譯開銷。

 

盡量做緩存,可使用memcached。memcached是一款高性能的內存對象緩存系統,可用來加速動態Web應用程序,減輕數據庫負載。對運算碼 (OP code)的緩存很有用,使得腳本不必為每個請求做重新編譯。

 

11、網頁用html而非php

 

毫無疑問,html靜態頁面的訪問速度是最快的,現在的CMS,都是可以在后台生成全站HTML靜態頁面的,這不僅可以提高用戶訪問網頁的速度,而對於搜索引擎的收錄和排名也是非常有利的。

 

以上幾點是本文提煉出來的PHP優化方法,當然,優化PHP絕非僅此一點,所謂學無止境,許許多多的優化方法和技巧,需要我們在實踐中不斷總結和運用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM