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

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

 

PHP是一門不少人正在使用的語言,在網站開發上PHP的使用普遍度超過ASP和ASP.NET,看看時下流行的CMS和博客用什麼語言來開發的就知道了。html

 

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

 

然而要編寫高效率的代碼,並非全部懂程序的人均可以編寫出來的,這須要通過多年的研究積累和經驗總結。web

 

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

 

一、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/)。緩存

 

二、鏈接符用逗號而不是句號服務器

 

php裏逗號和句號均可以起到鏈接符的做用,關於如何優化輸出,能夠看這裏[如何優化php字符串echo輸出](http://www.webkaka.com/tutorial/php/2012/05207/)。memcached

 

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

 

三、在執行for循環以前肯定最大循環數,不要每循環一次都計算最大值。

 

這條準則一樣適用於任何語言,這個是編程習慣,但這個習慣很很差,無論你使用什麼語言。

 

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

 

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

 

{

 

do_something();

 

}

 

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

 

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

 

{

 

do_something();

 

}

 

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

 

if else if 的使用很是廣泛,在其餘語言裏也同樣,這個寫法好像更符合人的說話習慣,可是在程序裏這樣寫並不太好,它在效率上比switch case要低。因此,一旦程序裏須要多個判斷時,就應該用switch case而不要再用if else if else if這樣。

 

五、數據庫鏈接當使用完畢時應關掉

 

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

 

六、錯誤消息代價昂貴

 

錯誤消息通常用於調試,它的執行效率實際上是很低的,速度上會比直接運行慢不少。因此,在程序不須要抓取錯誤消息時,就不要用。

 

七、局部變量要合理使用

 

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

 

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

 

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

 

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

 

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

 

由於PHP會在雙引號包圍的字符串中搜尋變量,單引號則不會。固然,只有當你不須要在字符串中包含變量時才能夠這麼作。更多分析[請看實例分析php單引號和雙引號的區別](http://www.webkaka.com/tutorial/php/2012/092718/)。

 

九、mod_zip你用了嗎

 

mod_zip可做爲Apache模塊,用來即時壓縮你的數據,並可以讓數據傳輸量下降80%。

 

十、緩存的使用

 

除非腳本能夠緩存,不然每次調用時都會從新編譯一次。引入一套PHP緩存機制一般能夠提高25%至100%的性能,以避免除編譯開銷。

 

儘可能作緩存,可以使用memcached。memcached是一款高性能的內存對象緩存系統,可用來加速動態Web應用程序,減輕數據庫負載。對運算碼 (OP code)的緩存頗有用,使得腳本沒必要爲每一個請求作從新編譯。

 

十一、網頁用html而非php

 

毫無疑問,html靜態頁面的訪問速度是最快的,如今的CMS,都是能夠在後臺生成全站HTML靜態頁面的,這不只能夠提升用戶訪問網頁的速度,而對於搜索引擎的收錄和排名也是很是有利的。

 

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

相關文章
相關標籤/搜索