每20秒执行一次php函数

时间:2013-01-08 14:51:42

标签: php

我有一个PHP脚本来解析来自JSON url的实时分数,然后检查是否有一些分数发生变化,它会调用另一个PHP脚本来将通知推送到IOS设备。

我的问题是如何让第一个脚本每20秒运行一次。

4 个答案:

答案 0 :(得分:3)

这取决于您使用的主机操作系统。对于linux / unix /等。用于安排任务的首选工具是cron。对于Windows或Mac或类似的东西,还有其他内置调度程序。

使用cron,安排每分钟运行的任务可能如下所示:

* * * * * /path/to/command

然而,粒度似乎只是分钟。因此,如果没有更精细的任务调度程序,您可能需要在内部处理20秒的延迟。

一个想法可能是将任务包装在运行命令的脚本中,休眠20秒,再次运行命令,休眠20秒,然后再次运行命令。然后cron作业将调用该包装脚本。我的bash有点生疏,但想法看起来像这样:

/path/to/command
sleep 20
/path/to/command
sleep 20
/path/to/command

答案 1 :(得分:1)

$total_time = 0;
$start_time = microtime(true);
while($total_time < 60)//run while less than a minute
  {
    //DoSomething;
    echo $total_time."\n";
    sleep(20);//wait amount in seconds
  $total_time =  microtime(true) - $start_time ;
  } 

将此添加到cronjob以便每分钟运行一次。

答案 2 :(得分:0)

也许你可以尝试sleep

while(1) {
    exec('php path/to/script.php');
    sleep(20);
}

答案 3 :(得分:0)

通常cronjob适用于此类任务。请看这里:http://www.thegeekstuff.com/2011/07/php-cron-job/
如果这不适用,您可以为PHP CLI http://php.net/manual/en/features.commandline.php编写脚本,这样可以无限运行。只需将while(true)循环与sleep()放在一起,然后使用php命令运行它,如> php yourscript.php