7

我有一个while(true)用来运行的脚本,所以它会永远运行直到它死掉。我希望能够让它每 4 分钟回显一次,我该怎么做?该脚本在命令提示符下运行,它使用它,while(true)所以它令人困惑,而且我不知道如何让它每 4 分钟执行一次。我怎样才能让它每 4 分钟回声一次,而仍在 a 中while(true)

4

3 回答 3

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
于 2012-10-13T22:45:40.530 回答
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.
}

这将允许循环中的代码继续运行,并且仅在每次迭代开始时检查时间。

于 2012-10-13T22:48:12.003 回答
1

while(true) { ... }尝试添加一个sleep() 参数函数循环。

$sleep = 4*60;
while(true)
{
    # waiting...        
    sleep($sleep);
    # work after 240 mins
}
于 2012-10-13T22:47:02.223 回答