【问题标题】:How to run a CRON every 8h and 1 minute如何每 8 小时 1 分钟运行一次 CRON
【发布时间】:2017-01-10 15:03:15
【问题描述】:

所以这是我遇到的一个问题:我想每 8 小时 1 分钟运行一次某个脚本。由于 CRONjobs 的 24 小时循环,我有点不知道如何将这个 8 小时 1 分钟的时间间隔继续到第二天。

如果这可能有助于找到答案,我正在使用 Laravel PHP 框架。

也欢迎除 CRON 之外的其他解决方案。请注意,虽然我非常想用 PHP 在服务器端处理它(我知道在 JavaScript 中它更容易,你只需间隔 8h1m);

【问题讨论】:

  • 为什么是 1 分钟?
  • 它与我必须向其发送数据的其他服务器有关。它有 8 小时的速率限制器,因此以 8 小时的间隔发布会出现问题。我没有办法改变这一点。此外,我还可以要求“每 8 小时 30 分钟运行一次 cron”,因为这类似于解决
  • @cmnardi 是的,它没有回答这个问题。那项工作之间有8小时。不是 8h 和 1m
  • 呸,你是对的。另一种选择是存储“最后一次运行”并让 cron 更频繁地运行,但在此之后添加一个时间至少为“8hrs1min”的检查。如果只能在 cron 中严格执行,那将会很有趣。
  • 不能用cron来完成。你需要另一个工具。

标签: php laravel cron scheduled-tasks


【解决方案1】:

如何每分钟运行一次。

$seconds = time();
$eightHoursThirtyMinutes = (8*60*60)+(30*60);
$minutes = $seconds - ($seconds % 60);

if($minutes % $eightHoursThirtyMinutes == 0)
{
    // code here
}

【讨论】:

  • 是的,我喜欢这个想法,但是我可能需要修复== 0 方程,因为我不确定每分钟比较 time() 时 CRON 调用的精确度。是否有可能在 1 秒后调用 CRON?
  • 是的,但这就是为什么我比较$minutes
  • 我最终在 Laravel 中使用了 $schedule->call(function(){})->when(function(){// code above});,它似乎工作得很好。诀窍确实是让 CRON 每分钟运行一次,并使用我的模型的 last_executed 属性检查服务器端的时间
【解决方案2】:

如果你想建立你的脚本的执行时间线,有这样的网站http://www.cronmaker.com/ 可以让你有你的字符串

希望对你有帮助

Cron 格式 0 0 0/8 1/1 * ? *

日期

  1. 2016 年 9 月 2 日星期五下午 4:00
  2. 2016 年 9 月 3 日星期六 12:00
  3. 2016 年 9 月 3 日星期六上午 8:00
  4. 2016 年 9 月 3 日星期六下午 4:00
  5. 2016 年 9 月 4 日星期日 12:00 AM

【讨论】:

  • 这并不能回答问题,因为要求是每个间隔为 8 小时 1 分钟 - 而不是每 8 小时或每 8 小时后的 1 分钟。
猜你喜欢
  • 2013-06-24
  • 1970-01-01
  • 2014-10-28
  • 2015-03-27
  • 2018-02-18
  • 1970-01-01
  • 1970-01-01
  • 2018-09-30
  • 1970-01-01
相关资源
最近更新 更多