預設最大執行時間 30 秒,長時間任務需調整超時設定。
max_execution_time = 300 ; 300秒,0 為無限制
修改後需重啟 PHP,影響所有腳本。
set_time_limit(300); // 300秒
set_time_limit(0); // 無限制
僅影響當前腳本,建議放在耗時操作前。
declare(ticks = 1);
function a() { sleep(10); echo "a finish\n"; }
function sig() { throw new Exception; }
try {
pcntl_alarm(1); // 1秒後發送 SIGALRM
pcntl_signal(SIGALRM, "sig");
a();
pcntl_alarm(0);
} catch (Exception $e) {
echo "timeout\n";
}
利用 pcntl_alarm 与信號處理實現單一函數超時中斷,需支援 PCNTL 擴充(非 Windows)。