我想将 PHP 的特定部分限制为 X 秒 - 如果需要更长的时间,请终止当前执行的代码(只是部分,而不是整个脚本)并运行备用代码。
伪代码示例(此处的示例用例是一个不稳定的 API,有时速度很快,有时它是一个黑洞):
$completed = 1;
$seconds = 60;
while ($completed != -1 && $completed < 5) {
limit ($seconds) {
$api = new SomeAPI('user','secret','key');
$data = $api->getStuff('user="bob"');
$completed = -1;
} catch () {
$completed++;
sleep(10);
}
}
if ($completed === 5) echo "Error: API black-hole'd 5 times.\n";
else {
//Notice: data processing is OUTSIDE of the time limit
foreach ($data as $row) {
echo $row['name'].': '.$row['message']."\n";
}
}
但是,这应该适用于任何事情。不仅仅是 API/HTTP 请求。例如,密集的数据库过程。
万一你读得太快: 这不是set_time_limit
答案,因为它们会影响整个脚本的时间限制,而不仅仅是一个部分(当然,除非我对它们的工作方式有误)。max_execution_time