我有一个使用while(true)
运行的脚本,因此它会一直运行直到它死掉。我想能够每4分钟回复一次,我该怎么做?该脚本在命令提示符下运行,它使用while(true)
所以它令人困惑加上我不知道如何让它每4分钟做一次。
如何让它在仍然处于while(true)
的情况下每4分钟回复一次?
答案 0 :(得分:7)
你可以尝试
while(true)
{
sleep(240); // sleep for 240 sec
echo " Hello World" ;
}
或者
$time = time();
while ( true ) {
/*
* Play Some Ball
*/
if ((time() - $time) >= 240) {
echo date("Y:m:d g:i:s"), PHP_EOL;
$time = time();
}
sleep(2);
}
Time = 2 sec, Sleep = 1 sec
2012:10:14 12:50:56
2012:10:14 12:50:58
2012:10:14 12:51:00
2012:10:14 12:51:02
2012:10:14 12:51:04
2012:10:14 12:51:06
2012:10:14 12:51:08
2012:10:14 12:51:10
2012:10:14 12:51:12
2012:10:14 12:51:14
答案 1 :(得分:3)
使用sleep方法实际上会停止运行脚本。如果这是你想要发生的事情,我不是100%。
攻击此问题的另一种方法是比较每次迭代时最后一次“echo”命令的时间戳。
$echo_time = time();
$interval = 4*60;
while(true){
if ($echo_time + $interval >= time()){
echo "$interval seconds have passed...";
$echo_time = time(); // set up timestamp for next interval
}
// other uninterrupted code goes here.
}
这将允许循环中的代码继续运行,并且只检查每次迭代开始时的时间。
答案 2 :(得分:1)
尝试添加while(true) { ... }
sleep()参数函数的循环。
$sleep = 4*60;
while(true)
{
# waiting...
sleep($sleep);
# work after 240 mins
}