我如何每秒运行一个PHP脚本?

时间:2012-01-13 08:17:20

标签: php loops

我正在写一个在线游戏。现在我必须检查事件是否发生(检查数据库中的时间戳)并根据执行某些操作。我必须每秒检查一次事件。

我想使用cronjob但是使用cron你只能每分钟运行一次脚本。

我的想法是在我的PHP脚本中使用cron和循环60次。但我认为这不是最佳解决方案。

那么每秒运行脚本的最佳方式是什么?

5 个答案:

答案 0 :(得分:0)

为什么不修改脚本以便它每秒重复一次代码?这将减少解析开销,并且不那么复杂。

答案 1 :(得分:0)

您应该运行一次脚本,并使用延迟循环来完成您想要的时间。 另一个好处是,这样做效率更高,而且您只需要打开一次资源(即数据库)。

答案 2 :(得分:0)

你不应该这样:P。没有主持人会接受你的cronjob每分钟运行一次? 您可以节省在数据库中运行的时间,下次运行时计算两次运行之间的时间并进行所需的计算。每一秒都是一个非常糟糕的主意。

答案 3 :(得分:0)

我搜索了一个更好的解决方案,但似乎我的第一个想法,干净的代码,是最好的解决方案。

这是我目前的代码:

<?php
set_time_limit(60);
$start = time();

for ($i = 0; $i < 59; ++$i) {
    // Do whatever you want here
    time_sleep_until($start + $i + 1);
}
?>

答案 4 :(得分:0)

$total_time = 0;
$start_time = microtime(true);
while($total_time < 60)
  {
        //DoSomethingHere;
    echo $total_time."\n";
    //sleep(5);
  $total_time =  microtime(true) - $start_time ;
  } 

在crontab中添加此项以便每分钟运行一次。