尽可能接近每日时间运行PHP脚本

时间:2019-04-23 00:06:30

标签: php

我有一个cron作业,可运行项目中的所有脚本。 Cron每10分钟运行一次。我想做的只是每天在特定时间运行一些特定的代码。

问题是,我无法更改cron的运行频率,因此必须间隔10分钟。每天只在给定时间附近运行一些代码的最佳方法是什么?

我还可以访问记录最近更新时间的变量

$dailyTimeToRunCode = '10:00:00';

我不确定从哪里开始。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

由于我们不确定每个小时是否会在00、10、20等每小时运行,所以我想出了这个解决方案。

它将基本上检查10:00:00之前是否还有不到10分钟的时间,然后精确地等待直到那个时间:

<?php

/* Set timezone and max execution time */
date_default_timezone_set('America/Los_Angeles');
ini_set('max_execution_time', 0);

/* First, check if we are 10min or less before the desired launch time */
$dailyTimeToRunCode = '10:00:00';
$time_left = strtotime(date('Y-m-d '.$dailyTimeToRunCode)) - time();
if ($time_left > 0 && $time_left < 10 * 60)
{
    /* Wait to until the desired exact time */
    sleep($time_left);

    /* Do something */
}