【问题标题】:Set execution timeout time when looping through records循环记录时设置执行超时时间
【发布时间】:2012-11-18 19:31:36
【问题描述】:

我想在 php 中设置执行超时。我想循环播放,例如由于我设置的执行时间,我想在 5 处剪切。

ini_set('max_execution_time',2);
for ($i=0;$i<10;$i++){
    echo time();
    echo ' i:'.$i;
    echo "\n";
    echo "\n";
}

想给它一个限制。

【问题讨论】:

  • 如果您想在 5 秒到期时中断循环,您可以在 for 循环之前将 time() 放入 var 中,并在循环内部检查经过的时间
  • 问题是 - for 循环永远不会超过 5 秒。
  • 好吧,他不能在几秒钟内完成,如果计数超过数字,他必须做一些事情并打破循环

标签: php timeout execution


【解决方案1】:

使用ini_set('max_execution_time',2);会影响整个PHP脚本,可能会导致

Fatal error: Maximum execution time of 2 second exceeded

您可以简单地将时间计算添加到您的 for 循环中;

$maxTime = 2; // sec ;
$start = time();
echo "<pre>";
for($i = 0; $i < 10, (time() - $start) < $maxTime; $i ++) {
    echo time();
    echo ' i:' . $i;
    echo "\n";
    echo "\n";
    sleep(1); // slow the script
}

输出

1354287243 i:0

1354287244 i:1

【讨论】:

    【解决方案2】:

    您可以在循环之前使用 time() 获取时间戳。并在 forloop 中进行额外的测试。

    $startTime = time();
    for ($i=0;$i<10 && time() < $startTime + 1000;$i++){
        echo time();
        echo ' i:'.$i;
        echo "\n";
        echo "\n";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-14
      • 1970-01-01
      • 2011-07-04
      • 2016-01-16
      • 2013-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多