60秒后PHP无限循环未终止

时间:2014-08-25 20:30:58

标签: php

我创建了一个无限的PHP while循环,它增加了一个变量然后回显:

$num = 1;

while($num >0) {
echo $num . "<br/>";
$num++;
}

由于php.ini中的设置如下所示,我希望在60秒后杀死/终止此操作:

max_execution_time  60  60
max_input_time  60  

对不起,如果我错了,但我希望看到这个工作在浏览器中被杀死(没有新的回声!)......

任何人都可以向我提供有关无限运行的PHP作业以及它们何时在服务器上被杀死的更多信息吗?

2 个答案:

答案 0 :(得分:1)

您将执行时间与挂钟时间混淆。它们不是同一件事。处理器在代码的每个循环上使用非常少的执行时间。它最终会让你离开,但这需要花费更长的时间。

可以这样想,您的处理器可能以2GHz运行。您认为执行其中一个循环需要多少指令?回声的时间很长(即很慢),并且不计入处理器执行时间。

答案 1 :(得分:0)

//using set_time_limit 
// starting php code here
echo "starting...\n"; 
// set_time_limit(10); //either would work
ini_set("max_execution_time", 10); //either would work


function doSomeExpensiveWork($currentTime){
  for ($r = 0; $r < 100000; $r++){ 
    $x =  tan(M_LNPI+log(ceil(  date("s")*M_PI*M_LNPI+100))); 
  } 
}

try{
  while(true)
  { 
      $currentTime = date("H:m:s"); 
      echo $currentTime, "\n";
      doSomeExpensiveWork($currentTime);
  } 
} catch (Exception $e) {
  //echo 'Caught exception: ',  $e->getMessage(), "\n";
}
echo "this will not be executed! $x"; 
// code end