我想在选定的时间后停止执行循环。意味着循环时它将尝试执行一个参数并花费很长时间,然后它将完成工作并转到下一个参数。如 :
for ($i=2 ; $i <= 100 ; $i++)
在这里,假设它将循环 3,4,5,6,7,8,9,10 并且在 11 中将需要很长时间才能执行。所以我只想在(即 10 秒)之后停止它并采取下一个选项,我的意思是 12、13、14 ......等等。所以,我该怎么做。我设置了这个set_time_limit(10);
,但它在这里不起作用。
您可以使用microtime()来测量经过的时间。请注意,这只会在迭代完成后中断。
$start = microtime(true);
$limit = 10; // Seconds
for ($i=2 ; $i <= 100 ; $i++) {
if (microtime(true) - $start >= $limit) {
break;
}
}
那是相当复杂的。您必须创建一个单独的线程来进行处理,以便您的主线程可以检查它是否已经运行了太长时间。
这些线程在 PHP 中称为“分叉”。
您必须研究过程控制功能,尤其是[pcntl_fork][2]
. 然后,使用pcntl_sigtimedwait,您可以在给定的超时期间等待分叉的进程。返回时pcntl_sigtimedwait
,可以查看它的返回值,看看进程是否超时。