php的性能優化

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

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

【3】不要使用“@”去屏蔽錯誤輸出。用@屏蔽錯誤消息的做法非常低效。
若你真的想抑制報錯,可以通過設置error_reporting來控制,好比栗子中的,行前設置,行後取消即可。

【4】儘量不要在for循環中使用函數,比如for ($x=0; x<count(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)
參考

【19】代碼約簡單,跑得越快。爲啥,因爲簡單。
(邏輯上的簡單)語法技巧 、 沒必要的封裝 、 一行一方法

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