在选定的时间后停止执行循环

时间:2012-11-02 12:41:33

标签: php loops

我想在选定的时间后停止执行循环。循环它的意思是尝试执行一个参数并花费很长时间然后它将完成工作并转到下一个参数。如:

for ($i=2 ; $i <= 100 ; $i++)

这里假设它将循环3,4,5,6,7,8,9,10并且在11中将需要很长时间才能执行。所以我只是想在之后(即10秒)停止它并采取下一个选项我的意思是12,13,14 ......等等。 那么,我该怎么做呢。我设置了这个set_time_limit(10);,但它在这里不起作用。

2 个答案:

答案 0 :(得分:1)

这很复杂。您必须创建一个单独的线程来进行处理,因此您的主线程可以检查它是否已经运行了太长时间。

这些线程在PHP中称为“forks”。

您必须调查Process Control functions,尤其是[pcntl_fork][2]。然后,使用pcntl_sigtimedwait,您可以在给定的超时期间等待分叉进程。当pcntl_sigtimedwait返回时,您可以检查其返回值以查看进程是否超时。

答案 1 :(得分:1)

您可以使用microtime()来衡量已用时间。请注意,这只会在迭代完成后中断。

$start = microtime(true);
$limit = 10;  // Seconds

for ($i=2 ; $i <= 100 ; $i++) {
  if (microtime(true) - $start >= $limit) {
    break;
  }
}