1

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

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

4

4 回答 4

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
于 2013-01-08T14:53:34.830 回答
2
$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 以每分钟运行一次。

于 2014-01-01T20:23:44.517 回答
0

一般而言,acronjob非常适合此类任务。看看这里:http
://www.thegeekstuff.com/2011/07/php-cron-job/ 如果这不适用,您也许可以为 PHP CLI http://php.net/编写脚本manual/en/features.commandline.php允许您无限运行。只需在其中放置一个带有 sleep() 的 while(true) 循环,然后使用 php 命令运行它> php yourscript.php

于 2013-01-08T14:55:39.020 回答
0

也许你可以试试睡觉

while(1) {
    exec('php path/to/script.php');
    sleep(20);
}
于 2013-01-08T14:55:25.147 回答