技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運營

贊助商

分類目錄

贊助商

最新文章

搜索

告訴你如何優(yōu)化php代碼 讓速度提升5倍以上

作者:admin    時間:2012-11-5 22:44:43    瀏覽:

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

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

其實PHP入門很容易,尤其是對于一個已經(jīng)接觸過程序編寫的人來說,而對于沒有接觸過程序語言的菜鳥來說,學(xué)習(xí)用PHP做一個輸出hello world的網(wǎng)頁也很輕松。

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

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

1、echo 比 print 快

echo和print是PHP程序中經(jīng)常使用的指令,尤其是需要調(diào)試的時候。echo和print都能輸出一段信息,但經(jīng)測試發(fā)現(xiàn),echo運行速度會比print快,因此在程序編寫是應(yīng)使用echo而非print。但是有時候也需要用到print,echo不能完全代替print。請看php echo()和print()有什么區(qū)別。

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

php里逗號和句號都可以起到連接符的作用,關(guān)于如何優(yōu)化輸出,可以看這里如何優(yōu)化php字符串echo輸出。

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

3、在執(zhí)行for循環(huán)之前確定最大循環(huán)數(shù),不要每循環(huán)一次都計算最大值。

這條準(zhǔn)則同樣適用于任何語言,這個是編程習(xí)慣,但這個習(xí)慣很不好,不管你使用什么語言。

// 在每次循環(huán)中sizeof函數(shù)都要被調(diào)用
   for ($i = 0; $i < sizeof($post_data); $i++)
   {
        do_something();
   }
// 您可以在循環(huán)起始部分對這個不變的量賦值
   for ($i = 0, $size = sizeof($post_data); $i < $size; $i++)
   {
        do_something();
   }

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

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

5、數(shù)據(jù)庫連接當(dāng)使用完畢時應(yīng)關(guān)掉

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

6、錯誤消息代價昂貴

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

7、局部變量要合理使用

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

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

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

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

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

因為PHP會在雙引號包圍的字符串中搜尋變量,單引號則不會。當(dāng)然,只有當(dāng)你不需要在字符串中包含變量時才可以這么做。更多分析請看實例分析php單引號和雙引號的區(qū)別。

9、mod_zip你用了嗎

mod_zip可作為Apache模塊,用來即時壓縮你的數(shù)據(jù),并可讓數(shù)據(jù)傳輸量降低80%。

10、緩存的使用

除非腳本可以緩存,否則每次調(diào)用時都會重新編譯一次。引入一套PHP緩存機制通??梢蕴嵘?5%至100%的性能,以免除編譯開銷。

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

11、網(wǎng)頁用html而非php

毫無疑問,html靜態(tài)頁面的訪問速度是最快的,現(xiàn)在的CMS,都是可以在后臺生成全站HTML靜態(tài)頁面的,這不僅可以提高用戶訪問網(wǎng)頁的速度,而對于搜索引擎的收錄和排名也是非常有利的。

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

標(biāo)簽: 優(yōu)化  
x
  • 站長推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */