我正在写一个在线游戏。现在我必须检查事件是否发生(检查数据库中的时间戳)并根据执行某些操作。我必须每秒检查一次事件。
我想使用cronjob但是使用cron你只能每分钟运行一次脚本。
我的想法是在我的PHP脚本中使用cron和循环60次。但我认为这不是最佳解决方案。
那么每秒运行脚本的最佳方式是什么?
答案 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中添加此项以便每分钟运行一次。