PHP 執行速度已很快,但高流量、高負載下仍需優化。以下方法經實戰驗證有效。
語法層面微優化
- 單引號字串:避免雙引號掃描變數,
echo 多參數 (逗號) 替代連接。
- 靜態方法:
static 方法快近 4 倍。
- 陣列索引加引號:
$row['id'] 比 $row[id] 快 7 倍。
- 預先計算迴圈上限:
for ($i=0, $n=count($arr); $i<$n; $i++) 避免每次呼叫 count()。
- foreach 替代 while/for 遍歷陣列。
- unset 大變數 釋放記憶體。
- 避免魔術方法:
__get、__set、__autoload 有開銷。
- require_once 代價高:能用
require 就不用 require_once。
- 絕對路徑 include:減少
include_path 搜尋。
- $_SERVER['REQUEST_TIME'] 取腳本啟動時間,比
time() 快。
- 函式替代正則:
str_replace > preg_replace,strtr 最快 (4x str_replace)。
- switch-case 替代多重 if-else。
- 禁用 @ 抑制錯誤:極度低效。
- 前置遞增 ++$i 比後置
$i++ 快 (3 vs 4 opcodes)。
資料庫與連線
- 用完即關閉連線,避免長連線。
- 優化 SQL,減少
INSERT/UPDATE,善用索引。
伺服器與快取層面
- Apache 啟用 mod_deflate:壓縮傳輸,提升瀏覽速度。
- OPcode 快取:APC、xcache、Zend Optimizer,免重複編譯,效能提升 25-100%。
- memcached:記憶體物件快取,減輕 DB 壓力,快取 OPcode 避免重編譯。
- 靜態 HTML 為主:Apache 解析 PHP 比靜態 HTML 慢 2-10 倍。
- 輸出緩衝控制:
ob_start 實現靜態模板,減少 DB 查詢。
- mod_zip/mod_gzip:即時壓縮,流量降 80%。
程式碼層面
- 盡用內建函式 (C 實作,極快)。
- 耗時函式考慮 C 擴展。
- 迴圈內避免宣告大變數/物件。
- 多維陣列避免巢狀迴圈賦值。
- 字串操作優先內建函式,避免正則。
- 全域變數用完
unset()。
file_get_contents 替代 fopen/fread 系列,效率高得多 (注意 URL 開啟需 PHP 版本支援)。
- 定期 Profiling (Xdebug) 找瓶頸。
優化是系統工程:**優先架構/快取/資料庫層面**,微優化只在瓶頸確認為語法時進行。過早優化是萬惡之源。