針對 PHP 5.x/7.x 版本總結的高性能編碼習慣,涵蓋語法選擇、內存管理、函數調用、I/O 操作等核心維度。掌握這些細節,能讓代碼在高併發場景下更穩健、更快速。
echo 可用逗號分隔多參數(echo $a, $b),避免字符串拼接開銷。$row['id'] 而非 $row[id]E_NOTICE 並轉換為字符串,速度差距達 7 倍。echo 優於 print,多參數優於拼接echo 是語言結構,無返回值,執行更快;echo $a, $b 避免中間字符串分配。foreachfor ($i=0; $i<count($arr); $i++) 每次迭代都調用 count()。改為 $len=count($arr); for($i=0;$i<$len;$i++) 或直接 foreach($arr as $v)。unset($largeArray) 或 $largeArray = null 幫助 GC 回收,尤其在長運行腳本(CLI、Swoole)中關鍵。__get、__set、__autoloadgetXxx(),自動加載改用 Composer PSR-4。require_once / include_oncerequire。require __DIR__ . '/config.php'; 避免遍歷 include_path,減少系統調用 stat() 次數。$_SERVER['REQUEST_TIME']time() 系統調用開銷。strpos、str_replace、substr 等內部優化極佳,正則引擎(PCRE)啟動開銷大。strtr > str_replace > preg_replacestrtr(C 層優化,速度是 str_replace 4 倍);複雜模式才用 preg_replace。switch-case 優於多層 if-elseifswitch 內部用跳轉表優化,條件分支多時優勢明顯;且代碼可讀性更強。@ 抑制錯誤@ 會修改錯誤報告級別、生成異常回溯信息,極其低效。改用 isset()、empty()、error_reporting() 精確控制。mod_deflate / Nginx gzipdisplay_errors=Off, log_errors=On, error_log=/var/log/php_errors.log。避免每次錯誤輸出 HTML 堆棧。function() { $a=0; $a++; } 比全局變量、對象屬性、靜態變量都快。 Zend VM 對 CV (Compiled Variable) 優化最激進。EG(symbol_table),且受 global 關鍵字影響。$this->prop++ 最慢(約局部變量 3 倍)__set 魔術方法。declare(strict_types=1) 開啟嚴格模式,減少隱式類型轉換開銷。opcache.enable=1、opcache.jit=1235(PHP 8+)開啟 JIT 編譯,獲得數量級性能提升。性能優化的核心是 減少不必要的工作:少分配內存、少系統調用、少哈希查找、少函數棧幀。這 20 條法則正是圍繞此原則展開。