PHP 預設腳本最大執行時間為 30 秒,超時即拋出 Fatal error: Maximum execution time of 30 seconds exceeded。本文提供三種解決方案,依場景選擇。
; php.ini
max_execution_time = 300 ; 設為 300 秒 (5 分鐘),0 表示無限制
<?php
// 放在腳本最開頭
set_time_limit(300); // 300 秒
set_time_limit(0); // 0 = 無限制(僅 CLI 或非安全模式下生效)
// 長時間任務建議定期重置,避免誤判
foreach ($largeDataset as $item) {
process($item);
if ($counter++ % 100 === 0) set_time_limit(300); // 每 100 筆重置
}
?>
php.ini 設定。max_execution_time=0(無限制),通常不需設定。# .htaccess 或 區塊
php_value max_execution_time 300
AllowOverride Options 或 AllowOverride All。| 方案 | 範圍 | 生效方式 | 適用場景 |
|---|---|---|---|
| php.ini | 全域 | 重啟服務 | 專屬伺服器、統一政策 |
| set_time_limit() | 單腳本 | 立即 | 特定長耗時任務(匯入、報表、批次) |
| .htaccess | 目錄 | 即時 | 共享主機、子專案獨立需求 |
依專案架構選擇適當方案,並以非同步化為長遠目標,避免單一請求阻塞過久影響使用者體驗與伺服器穩定。