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

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

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

其實(shí)PHP入門很容易,尤其是對(duì)于一個(gè)已經(jīng)接觸過(guò)程序編寫的人來(lái)說(shuō)暴匠,而對(duì)于沒有接觸過(guò)程序語(yǔ)言的菜鳥來(lái)說(shuō)傻粘,學(xué)習(xí)用PHP做一個(gè)輸出hello world的網(wǎng)頁(yè)也很輕松。

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

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

1贡避、echo 比 print 快

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

2姚糊、連接符用逗號(hào)而不是句號(hào)

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

此外奢啥,輸出多個(gè)字符串時(shí),用逗號(hào)代替句點(diǎn)來(lái)分隔字符串寂纪,速度更快赌结。

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

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

// 在每次循環(huán)中sizeof函數(shù)都要被調(diào)用

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

{

do_something();

}

// 您可以在循環(huán)起始部分對(duì)這個(gè)不變的量賦值

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

{

do_something();

}

4该窗、使用選擇分支語(yǔ)句(譯注:即switch case)好于使用多個(gè)if弟蚀,else if語(yǔ)句义钉。

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

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

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

6议慰、錯(cuò)誤消息代價(jià)昂貴

錯(cuò)誤消息一般用于調(diào)試,它的執(zhí)行效率其實(shí)是很低的奴曙,速度上會(huì)比直接運(yùn)行慢很多别凹。所以,在程序不需要抓取錯(cuò)誤消息時(shí)洽糟,就不要用炉菲。

7坤溃、局部變量要合理使用

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

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

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

8道偷、用單引號(hào)代替雙引號(hào)來(lái)包含字符串

實(shí)踐證明,用單引號(hào)代替雙引號(hào)來(lái)包含字符串记劈,這樣做會(huì)更快一些勺鸦。

因?yàn)镻HP會(huì)在雙引號(hào)包圍的字符串中搜尋變量,單引號(hào)則不會(huì)目木。當(dāng)然换途,只有當(dāng)你不需要在字符串中包含變量時(shí)才可以這么做。更多分析請(qǐng)看實(shí)例分析php單引號(hào)和雙引號(hào)的區(qū)別嘶窄。

9怀跛、mod_zip你用了嗎

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

10忠蝗、緩存的使用

除非腳本可以緩存现横,否則每次調(diào)用時(shí)都會(huì)重新編譯一次。引入一套PHP緩存機(jī)制通掣笞睿可以提升25%至100%的性能戒祠,以免除編譯開銷。

盡量做緩存速种,可使用memcached姜盈。memcached是一款高性能的內(nèi)存對(duì)象緩存系統(tǒng),可用來(lái)加速動(dòng)態(tài)Web應(yīng)用程序配阵,減輕數(shù)據(jù)庫(kù)負(fù)載馏颂。對(duì)運(yùn)算碼 (OP code)的緩存很有用示血,使得腳本不必為每個(gè)請(qǐng)求做重新編譯。

11救拉、網(wǎng)頁(yè)用html而非php

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

以上幾點(diǎn)是本文提煉出來(lái)的PHP優(yōu)化方法黔姜,當(dāng)然,優(yōu)化PHP絕非僅此一點(diǎn)蒂萎,所謂學(xué)無(wú)止境秆吵,許許多多的優(yōu)化方法和技巧,需要我們?cè)趯?shí)踐中不斷總結(jié)和運(yùn)用岖是。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末帮毁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子豺撑,更是在濱河造成了極大的恐慌烈疚,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件聪轿,死亡現(xiàn)場(chǎng)離奇詭異爷肝,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)陆错,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門灯抛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人音瓷,你說(shuō)我怎么就攤上這事对嚼。” “怎么了绳慎?”我有些...
    開封第一講書人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵纵竖,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我杏愤,道長(zhǎng)靡砌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任珊楼,我火速辦了婚禮通殃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘厕宗。我一直安慰自己画舌,他們只是感情好堕担,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著骗炉,像睡著了一般照宝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上句葵,一...
    開封第一講書人閱讀 52,584評(píng)論 1 312
  • 那天厕鹃,我揣著相機(jī)與錄音,去河邊找鬼乍丈。 笑死剂碴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的轻专。 我是一名探鬼主播忆矛,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼请垛!你這毒婦竟也來(lái)了催训?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤宗收,失蹤者是張志新(化名)和其女友劉穎漫拭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體混稽,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡采驻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了匈勋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片礼旅。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖洽洁,靈堂內(nèi)的尸體忽然破棺而出痘系,到底是詐尸還是另有隱情,我是刑警寧澤饿自,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布碎浇,位于F島的核電站,受9級(jí)特大地震影響璃俗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜悉默,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一城豁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抄课,春花似錦唱星、人聲如沸雳旅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)攒盈。三九已至,卻和暖如春哎榴,著一層夾襖步出監(jiān)牢的瞬間型豁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工尚蝌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留迎变,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓飘言,卻偏偏與公主長(zhǎng)得像衣形,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子姿鸿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 一谆吴、php可以做什么 php是一種可以在服務(wù)器端運(yùn)行的編程語(yǔ)言,可以運(yùn)行在Web服務(wù)器端苛预。 php是一門后臺(tái)編程語(yǔ)...
    空谷悠閱讀 3,104評(píng)論 4 97
  • 個(gè)人學(xué)習(xí)批處理的初衷來(lái)源于實(shí)際工作句狼;在某個(gè)迭代版本有個(gè)BS(安卓手游模擬器)大需求,從而在測(cè)試過(guò)程中就重復(fù)涉及到...
    Luckykailiu閱讀 4,733評(píng)論 0 11
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理碟渺,服務(wù)發(fā)現(xiàn)鲜锚,斷路器,智...
    卡卡羅2017閱讀 134,714評(píng)論 18 139
  • 不得不承認(rèn)苫拍,用“附圖”來(lái)作為吸引讀者的誘餌芜繁。不過(guò)放心,真的有作品呈現(xiàn)绒极。畫畫的嘛骏令,作品就像商家的貨,沒料的話垄提,還說(shuō)什...
    插畫師顧刷刷閱讀 606評(píng)論 3 3
  • 窗外的雨淅淅瀝瀝地下了好幾個(gè)夜晚铡俐,我向來(lái)不喜歡雨天凰兑,不喜歡它自帶渲染的悲傷氛圍,電影里許多令人哀傷...
    南方阿景閱讀 306評(píng)論 0 1