如何在无限循环中每4分钟回复一次

时间:2012-10-13 22:44:03

标签: php

我有一个使用while(true)运行的脚本,因此它会一直运行直到它死掉。我想能够每4分钟回复一次,我该怎么做?该脚本在命令提示符下运行,它使用while(true)所以它令人困惑加上我不知道如何让它每4分钟做一次。  如何让它在仍然处于while(true)的情况下每4分钟回复一次?

3 个答案:

答案 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
}