PHP 效能優化分為環境配置與程式碼撰寫兩大面向。以下整理 php.ini 關鍵參數與 50+ 條程式碼層面優化建議。
| 參數 | 建議值 | 說明 |
|---|---|---|
disable_functions | phpinfo,exec,system,popen,shell_exec,proc_open,... | 禁用高風險函數,降低被攻擊風險 |
max_execution_time | 30 (視需求調整) | 防止腳本無限執行佔用資源 |
memory_limit | 128M (視記憶體調整) | 限制單腳本記憶體上限 |
register_globals | Off | 安全性關鍵,嚴禁開啟 |
upload_max_filesize | 10M (視需求) | 上傳檔案大小限制 |
session.save_path | /dev/shm (Linux) | Session 存放記憶體檔案系統,極大提升 I/O |
opcache.enable | 1 | 啟用 OPcache,避免重複編譯 |
opcache.memory_consumption | 128 | OPcache 共享記憶體大小 (MB) |
opcache.max_accelerated_files | 10000 | 最大快取檔案數 |
realpath_cache_size | 4096k | 路徑解析快取,減少 stat 系統調用 |
$arr['key'] 加引號:比 $arr[key] 快 7 倍。echo 多參數:echo $a, $b 比串接快。$len=count($arr); for(...)。unset() 大變數:釋放記憶體,降峰值。__get/__set/__autoload 額外開銷大。require_once:改用自動載入器 + 佈署優化。include_path。$_SERVER['REQUEST_TIME']:免呼叫 time()。strpos/str_replace/strtr。strtr 單字元轉換最快:strtr($s, 'ab', 'cd')。strpos 判斷再替換:無需替換時快 200%。@:錯誤抑制極慢,改用 error_reporting 區塊。switch-case 優於多重 if-else。mod_deflate/mod_gzip:傳輸量降 80%。ip2long():省空間、利索引。checkdnsrr() 驗證 Email 域名。mysqli/PDO:mysql_* 已移除。display_errors:生產環境防洩漏。gzcompress() 存 DB:壓縮 90%。&$var 多返回值。isset($str{5}) 替代 strlen():語言結構無函數呼叫。++$i 優於 $i++:少一 opcode。echo $_POST['x'] 而非 $x=$_POST['x']; echo $x。file_get_contents() 替代 fopen 系列。foreach 優於 for/while。i += 1 優於 i = i + 1。unset()。split() 已棄用,用 explode() 或 preg_split()。slow_query_log、PHP slowlog (FPM)。