PHP+MYSQL優(yōu)化總結(jié)讓您的網(wǎng)站如飛一般加速
2019-04-12
【1】在循環(huán)中判斷時,數(shù)值判斷使用恒等要比等于高效。
【2】在數(shù)組中,數(shù)組下標(biāo)是字母時一定要加上單引號或雙引號。因?yàn)?row['id']的效率是$row[id]的7倍。
【3】不要使用“@”去屏蔽錯誤輸出。用@屏蔽錯誤消息的做法非常低效。
若你真的想抑制報錯,可以通過設(shè)置error_reporting來控制,好比栗子中的,行前設(shè)置,行后取消即可。
【4】盡量不要在for循環(huán)中使用函數(shù),比如for ($x=0; $x < count($array); $x)每循環(huán)一次都會調(diào)用count()函數(shù)。
【5】注銷那些不必的變量尤其是大數(shù)組,以即開釋內(nèi)存。
【6】數(shù)據(jù)庫連接該使用完畢時當(dāng)閉掉。
【7】使用挑選分支語句(switch case)佳于使用少個if,else if語句。
【8】盡量使用include/require, 而不是include_once/require_once.
在《高性能PHP應(yīng)用開發(fā)》(下載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個并發(fā)。
ab -c 10 -n 100000 localhost/index.php
結(jié)果顯示 require_once 響應(yīng)時間為99毫秒,每秒支持100.63個請求
而require響應(yīng)時間為94.8毫秒,減少5毫秒,同時并發(fā)數(shù)增加到105.44個。
參考:再一次, 不要使用(include/require)_once http://www.laruence.com/2012/09/12/2765.html
【9】不要重復(fù)造車。很多人在重復(fù)寫著已有的內(nèi)置function.
現(xiàn)如今的PHP:
- 有2700多個function (現(xiàn)在更多了)
- 80個核心的擴(kuò)展
- 154個pecl擴(kuò)展
選擇已經(jīng)存在的用吧,自己搞毛?。?/p>
【10】假如在代碼中具有大批耗時的函數(shù),最好能夠斟酌用C擴(kuò)大的方法完成它們。
【11】str_replace函數(shù)比preg_replace函數(shù)快,但strtr函數(shù)的效力是str_replace函數(shù)的四倍。
【12】合理運(yùn)用字符串比較函數(shù):strncmp / strncasecmp 要比 substr 什么的好很多,不管怎樣,都比preg_*系列的字符串匹配方法好。
【13】使用echo的多重參數(shù)取代字符串銜接。即使用逗號而不是點(diǎn)連接字符串。
例如:
$name = 'THOMAS';
echo 'Hello,My name is ' . $name; //不推薦
echo 'Hello,My name is ' , $name; //推薦,速度更快
【14】不要引入不需要的文件。每個php腳本文件的引入,都會造成zend編譯與執(zhí)行環(huán)節(jié)。編譯耗時遠(yuǎn)大于執(zhí)行的時間。
【15】獲取時間的方式:請不要一遍遍的調(diào)用 time()直接使用 $_SERVER['REQUEST_TIME']即可得到秒級別的時間戳,不必調(diào)用函數(shù)
【16】 Session 存儲。PHP默認(rèn)是把SESSION存儲在一個文件中。把存儲session分落在一個目錄中,減輕單位間的讀寫頻度。
- 為每個項(xiàng)目設(shè)置他們獨(dú)立的session存儲目錄
- 利用php.ini的配置 session.save_path=”N;/path”將session存儲在多個目錄中
【17】 Session不采用文件存儲。文件存儲不是一個優(yōu)秀的方案
- mm – 固話的共享內(nèi)存存儲
- apc – 用APC存儲、獲取、刪除
- memcache – 基于內(nèi)存的存儲服務(wù)
【18】代碼約簡單,跑得越快。為啥,因?yàn)楹唵巍?/p>
(邏輯上的簡單)語法技巧 、 沒必要的封裝 、 一行一方法