Php循环没有停止

时间:2014-07-01 03:36:54

标签: php

我有一个PHP脚本,我在脚本中遇到问题。

看看我在脚本中完成了什么,我的脚本中的问题是session_destroy();unset($_SESSION['timeout']);发生时,它应该杀死timeout然后{{1} } 即将结束。但这些都没有发生,它会循环并执行while循环中的内容。我想知道为什么。你能看一下我的代码吗?

我的代码:

while loop if(time() >  $st)

1 个答案:

答案 0 :(得分:0)

没有永远运行,只是频繁调用time()导致的延迟重载,这使得它看起来好像花了永远运行,特别是在慢速服务器(或计算机,我猜你的情况)。例如,在一秒钟内($st = time() + 1),系统可以对time()函数进行1,000,000次调用,乘以10次($st = time() + 1)并且几乎被锁定服务器。在这种情况下,我建议您使用 less aggresive 方法来测量超时,例如使用sleep()函数(这是一个非常简化的代码版本):

$st = time() + 5;

while(true) {
    $t = time();      
    if( $t > $st ) {
        echo 'loop finshed';
        break;
    }
    sleep(1);
}

所以它会在每个循环中休眠1秒,直到达到或超过超时,而不会使time()次调用超载CPU。 sleep()函数的工作时间为秒,因此最小值为1秒,但如果只有1对您不够,则可以使用usleep()函数,该函数以微秒为单位休眠执行。因此,如果您想让线程休眠1/20秒,您可以更改sleep()

usleep(50000);

有关PHP手册页上sleep()usleep()的更多信息。