我创建了一个无限的PHP while循环,该循环增加了一个变量,然后返回:
$num = 1;
while($num >0) {
echo $num . "<br/>";
$num++;
}
我原以为这会在60秒后终止,因为php.ini中的设置如下:
max_execution_time 60 60
max_input_time 60
如果我错了,很抱歉,但我本以为会在浏览器中看到工作被杀(没有新的回声!)。。。
有人能给我更多关于运行的无限PHP作业的信息吗?当它们在服务器上被杀死时?
您混淆了执行时间和挂钟时间。它们不是一回事。处理器在代码的每个循环上使用的执行时间非常少。它最终会让你超时,但它需要比一分钟更长的时间。
这样想吧,你的处理器可能在2GHz下运行。你认为做一个循环需要多少条指令?echo上的时间很大(即较慢),并且不计入处理器执行时间。
//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