整理自實戰經驗與底層原理分析的 55 條 PHP 效能優化建議,涵蓋語法細節、記憶體管理、資料庫、快取、擴展等面向。
echo 優於 print:echo 無回傳值,約快 8%。大字串輸出建議開啟 ob_start 或 Apache mod_deflate。$len = count($arr); for ($i=0; $i<$len; $i++) 避免每次呼叫 count()。unset() 大型陣列/物件:PHP 陣列記憶體利用率約 1/10,釋放可大幅降低峰值記憶體。__get/__set/__autoload 等會觸發額外查找與磁碟 I/O,__autoload 應建立清晰的類名對應檔案規則。require_once:需檢查是否已載入,改用 require + 架構設計避免重複載入。include_path。$_SERVER['REQUEST_TIME']:免呼叫 time()。strpos/str_replace/strtr 效能遠優於 preg_*。strtr > str_replace > preg_replace:單字元轉換用 strtr($str, 'abcd', 'efgh') 效能最高(約 10 倍)。strpos 判斷是否需替換:無需替換時快 200%。@ 抑制錯誤:內部開銷大,迴圈中極慢,改用 error_reporting(0) 區塊控制。$row['id']:比 $row[id] 快 7 倍(避免常數查找)。for ($i=0; $i 應預存 count() 結果。 echo $a, $b 優於 echo $a . $b:逗號為多參數輸出,無需先串接。ip2long() 轉整數:節省 1/4 儲存空間,利於排序查詢。checkdnsrr() 驗證 Email 域名有效性:輕量級檢查。mysqli_* / PDO:mysql_* 已移除。?::簡潔且略快。display_errors,生產環境用 error_reporting(0):防洩漏敏感資訊。gzcompress() 壓縮:可壓縮 90%。&$var 實現多返回值:避免陣列封裝開銷。isset($str{5}) 替代 strlen($str) < 5:語言結構無函數呼叫開銷。++$i 快於 $i++:少一條 opcode,無臨時變數。$desc = $_POST['desc'] 會雙倍記憶體,直接用 $_POST['desc']。switch-case 優於多重 if-else:可讀性與效能雙贏。file_get_contents():替代 fopen/fread/fclose 系列,效能高。foreach 效能優於 while/for:內部優化較好。i += 1 優於 i = i + 1:符合 C/C++ 慣例,opcode 較少。unset()。mod_deflate:傳輸量降 80%。split() 比 explode() 快約 23%:支援正則分隔符(但 split 已棄用,建議 preg_split 或 explode)。效能優化核心在於減少不必要的運算、記憶體分配、磁碟/網路 I/O、函數呼叫開銷。實務上應以分析器(Xdebug/Blackfire)定位熱點,針對性優化,避免過早優化犧牲可維護性。