我有一个 PHP 脚本来解析来自 JSON url 的实时分数,然后检查是否某些分数发生了变化,它调用另一个 php 脚本将通知推送到 IOS 设备。
我的问题是如何让第一个脚本每 20 秒运行一次。
我有一个 PHP 脚本来解析来自 JSON url 的实时分数,然后检查是否某些分数发生了变化,它调用另一个 php 脚本将通知推送到 IOS 设备。
我的问题是如何让第一个脚本每 20 秒运行一次。
这取决于您使用的主机操作系统。对于 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
$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 以每分钟运行一次。
一般而言,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
也许你可以试试睡觉
while(1) {
exec('php path/to/script.php');
sleep(20);
}