首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP「Maximum execution time of 30 seconds exceeded」錯誤完整解決方案

     編輯:PHP 綜合知識

PHP 預設腳本最大執行時間為 30 秒,超時即拋出 Fatal error: Maximum execution time of 30 seconds exceeded。本文提供三種解決方案,依場景選擇。

方案一:修改 php.ini(全域永久生效)

; php.ini
max_execution_time = 300  ; 設為 300 秒 (5 分鐘),0 表示無限制
  • 修改後必須重啟 Web 伺服器(Apache/Nginx + PHP-FPM)生效。
  • 適用於所有腳本,需謹慎評估是否會導致資源佔用過久。

方案二:腳本內動態設定(單支程式控制)

<?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 設定。
  • 安全模式 (safe_mode) 下無效(PHP 5.4+ 已移除 safe_mode)。
  • CLI 模式預設 max_execution_time=0(無限制),通常不需設定。

方案三:.htaccess / Apache 虛擬主機(目錄級覆蓋)

# .htaccess 或  區塊
php_value max_execution_time 300
  • 需 Apache AllowOverride Options 或 AllowOverride All。
  • 僅影響該目錄下 PHP 腳本,適合共享主機無法改 php.ini 時使用。

方案比較與建議

方案範圍生效方式適用場景
php.ini全域重啟服務專屬伺服器、統一政策
set_time_limit()單腳本立即特定長耗時任務(匯入、報表、批次)
.htaccess目錄即時共享主機、子專案獨立需求

根本優化建議

  • 將長耗時工作移至背景任務(Gearman、Redis Queue、Laravel Jobs、cron + CLI)。
  • 優化 SQL 查詢、加入索引、分批處理大量資料。
  • 啟用 OPcache 減少編譯開銷。

依專案架構選擇適當方案,並以非同步化為長遠目標,避免單一請求阻塞過久影響使用者體驗與伺服器穩定。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved