2013-01-08 203 views
1

我有一个PHP脚本来解析JSON网址的实时分数,然后检查一些分数是否改变,调用另一个php脚本将通知推送到IOS设备。每20秒执行一次php函数

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

回答

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 
+0

克朗的频率不能少于一分钟。你最好每分钟使用cron运行脚本,并且在运行一分钟后让脚本自己死掉。在脚本中,您可以一次睡20秒并执行该功能。 –

+0

@ColinMorelli:看起来我们的想法是一样的:)一个包装脚本允许调度仍然与任务本身分离,因为任务不应该与调度相结合。 – David

+0

同意,但我不会将调度与任务结合起来。相反,我指的是睡眠20秒的封装PHP脚本,并调用实际的动作脚本。这将允许您根据一天中的时间,数据库设置等动态设置时间表 - 如果需要的话。 –

0

也许你可以尝试sleep

while(1) { 
    exec('php path/to/script.php'); 
    sleep(20); 
} 
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运行每分钟。