PHP性能優化總結

【1】在循環中判斷時,數值判斷使用恆等要比等於高效。

 

【2】在數組中,數組下標是字母時一定要加上單引號或雙引號。因爲$row['id']的效率是$row[id]的7倍。

 

【3】不要使用“@”去屏蔽錯誤輸出。用@屏蔽錯誤消息的做法非常低效。

若你真的想抑制報錯,可以通過設置error_reporting來控制,好比栗子中的,行前設置,行後取消即可。

 

【4】儘量不要在for循環中使用函數,比如for ($x=0; $x < count($array); $x)每循環一次都會調用count()函數。

 

【5】註銷那些不必的變量尤其是大數組,以即開釋內存。

 

【6】數據庫連接該使用完畢時當閉掉。

 

【7】使用挑選分支語句(switch case)佳於使用少個if,else if語句。

 

【8】儘量使用include/require, 而不是include_once/require_once.

在《高性能PHP應用開發》(下載http://pan.baidu.com/share/link?shareid=4170631476&uk=2016712711)一書中有個測試。

代碼:

<?php

require_once("ClassA.php");

require_once("ClassB.php");

require_once("ClassC.php");

require_once("ClassD.php");

<?php

require("ClassA.php");

require("ClassB.php");

require("ClassC.php");

require("ClassD.php");

 

echo 'Only testing require_once...';

類ABCD四個文件分別爲四個空類,分別放在"ClassA.php","ClassB.php","ClassC.php","ClassD.php"四個文件中:

Class A{

}

Class B{

}

Class C{

}

Class D{

}

試用ab命令模擬10萬個請求,同時有5個併發。

ab -c 10 -n 100000 localhost/index.php

結果顯示 require_once 響應時間爲99毫秒,每秒支持100.63個請求

而require響應時間爲94.8毫秒,減少5毫秒,同時併發數增加到105.44個。

參考:再一次, 不要使用(include/require)_once http://www.laruence.com/2012/09/12/2765.html

 

【9】不要重複造車。很多人在重複寫着已有的內置function.

現如今的PHP:

- 有2700多個function (現在更多了)

- 80個核心的擴展

- 154個pecl擴展

選擇已經存在的用吧,自己搞毛啊!

 

【10】假如在代碼中具有大批耗時的函數,最好能夠斟酌用C擴大的方法完成它們。

 

【11】str_replace函數比preg_replace函數快,但strtr函數的效力是str_replace函數的四倍。

 

【12】合理運用字符串比較函數:strncmp / strncasecmp 要比 substr 什麼的好很多,不管怎樣,都比preg_*系列的字符串匹配方法好。

 

【13】使用echo的多重參數取代字符串銜接。即使用逗號而不是點連接字符串。

例如:

$name = 'THOMAS';

echo 'Hello,My name is ' . $name; //不推薦

echo 'Hello,My name is ' , $name; //推薦,速度更快

 

【14】不要引入不需要的文件。每個php腳本文件的引入,都會造成zend編譯與執行環節。編譯耗時遠大於執行的時間。

 

【15】獲取時間的方式:請不要一遍遍的調用 time()直接使用 $_SERVER['REQUEST_TIME']即可得到秒級別的時間戳,不必調用函數

 

【16】 Session 存儲。PHP默認是把SESSION存儲在一個文件中。把存儲session分落在一個目錄中,減輕單位間的讀寫頻度。

- 爲每個項目設置他們獨立的session存儲目錄

- 利用php.ini的配置 session.save_path=”N;/path”將session存儲在多個目錄中

 

【17】 Session不採用文件存儲。文件存儲不是一個優秀的方案

- mm – 固話的共享內存存儲

- apc – 用APC存儲、獲取、刪除

- memcache – 基於內存的存儲服務

 

【18】系統調用時昂貴的。請手動釋放你的資源(Please release resources manually)

<a href="http://www.laruence.com/2012/07/25/2662.html" target="_blank">參考</a>

 

【19】代碼約簡單,跑得越快。爲啥,因爲簡單。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章