我有一个PHP脚本,我在脚本中遇到问题。
看看我在脚本中完成了什么,我的脚本中的问题是session_destroy();
和unset($_SESSION['timeout']);
发生时,它应该杀死timeout
然后{{1} } 即将结束。但这些都没有发生,它会循环并执行while循环中的内容。我想知道为什么。你能看一下我的代码吗?
我的代码:
while loop if(time() > $st)
答案 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);