PHP 效能優化不僅關乎語法選擇,更涉及架構設計、快取策略、資料庫調優等多個維度。本文彙整 53 條經驗法則,按影響範圍分類,助你構建高效能 PHP 應用。
echo 'hello', $name; 以逗號分隔多參數輸出,避免字串連接開銷。$this,宣告 static 可避免物件實例化開銷。$row['id'] 比 $row[id] 快 7 倍(後者觸發常數查找再轉字串)。echo 勝過 print:echo 無回傳值,語法結構更輕量;多參數輸出避免連接。for ($i=0, $n=count($arr); $i<$n; $i++) 避免每次迴圈呼叫 count();優先使用 foreach。unset($largeArray) 釋放記憶體,特別在長腳本/CLI 模式關鍵。__get/__set/__autoload 觸發額外查找,效能損耗顯著。require_once:路徑解析與檢查開銷大,生產環境建議使用類別自動載入(PSR-4 + Composer)。include_path,減少系統呼叫。$_SERVER['REQUEST_TIME']:避免呼叫 time() 系統呼叫開銷。str_replace 比 preg_replace 快;strtr 單字元替換效能是 str_replace 4 倍。switch 優於多重 if-else:編譯為跳躍表,分支預測更友善。@ 抑制錯誤:極其低效,改用條件判斷或自定義錯誤處理器。++$i (3 opcodes) 快於 $i++ (4 opcodes,產生暫存變數)。mod_deflate/mod_gzip:壓縮傳輸體積 70-80%,降低頻寬與延遲。strlen vs isset 技巧:if (!isset($str[5])) 比 if (strlen($str) < 5) 快(語言結構 vs 函數呼叫)。file_get_contents 替代 fopen/fread 系列:單次系統呼叫讀取整檔,效率顯著更高(注意 allow_url_fopen 設定)。yield 惰性求值。strpos/substr/explode 等遠快於 PCRE。foreach 優於 while/for:內部迭代器實現,無額外計數器開銷。$i += 1 優於 $i = $i + 1:少一次變數查找與賦值操作(C 風格複合賦值)。unset():釋放符號表條目,減少請求結束時清理負擔。pm.max_children、pm.start_servers、pm.max_requests 依據記憶體與 CPU 核心數計算。PHP 效能優化是系統工程,80% 的收益來自 20% 的關鍵路徑(資料庫、快取、演算法)。優先使用剖析工具定位熱點,再針對性應用上述法則。切記:過早優化是萬惡之源,先寫正確、可維護的代碼,再基於數據驅動優化。