【问题标题】:Laravel cron/schedule monthly() not runningLaravel cron/计划每月()未运行
【发布时间】:2020-08-28 06:02:13
【问题描述】:

Laravel 5.8.33

我运行 2 个时间表,一个每 5 分钟一次,一个每月一次。使用everyFiveMinutes() 可以完美运行五分钟计划。但是每月计划monthly() 永远不会运行。我也试过monthlyOn(1, '00:15') 但问题仍然存在。

如果我将monthly() 换成everyFiveMinutes() 就没有问题。

日志文件中没有错误,它根本没有运行。有没有其他人有这个问题?是否有替代每月()的请求?

    $logfilename = 'cron_'. now()->format('Y_m_d') . '.txt'; 

    //Push Notification check - RUNS EVERY FIVE MINUTES
    $schedule->exec('env -i /usr/local/bin/php72 -f /www/xxxx-xxxx.com/artisan command:pushmessages')->everyFiveMinutes()->appendOutputTo(public_path().'/logs/'.$logfilename);

    //End of month stats archive - NEVER RUNS
    $schedule->exec('env -i /usr/local/bin/php72 -f /www/xxxx-xxxx.com/artisan command:archivestats')->monthly()->appendOutputTo(public_path().'/logs/'.$logfilename);

【问题讨论】:

  • 我想不出不工作的理由,但我可以建议使用条件并将日期检查为每月的第一天:->daily()->when(function () { return date('d') == '01'; });
  • 你确定它没有运行吗? monthly() 将在每月第一天的午夜运行 - 您的脚本中是否有一些与日期/时间/月份相关的代码或测试可能会在那时失败或未通过或类似的东西?是否有脚本运行且不生成任何输出或错误的执行流程?在脚本开头添加一些日志,无论如何都会执行。
  • 参见例如this question - OP 确信他们的工作没有运行,但它只是在没有错误检查的情况下运行并且没有生成输出。

标签: laravel cron schedule


【解决方案1】:

我知道这是迟到的答案,但这可能会有所帮助。这很奇怪,因为语法是正确的,我只能想到一个原因,那就是命令本身,你能分享archivestats 命令代码吗?

以下是一些要遵循的步骤:

  1. 运行此命令:

$schedule->exec('env -i /usr/local/bin/php72 -f /www/xxxx-xxxx.com/artisan 命令:pushmessages')->monthly()->appendOutputTo(public_path().'/logs/'.$logfilename);

如果它有效,那么问题肯定出在archivestats 命令中。

  1. 创建一个 cron 任务(例如来自 GUI 或来自终端,但不是来自 laravel),它将每月在服务器上运行...查看这个 link 和这个 link

如果您可以分享上述步骤的结果,这将有助于发现问题所在。

【讨论】:

  • 谢谢 - 对不起,这太晚了 - 每月()计划似乎根本没有运行。如果我在 everyfiveminutes() 上运行我的 achivestats,那么它的处理就没有问题。所以每月()没有运行:S
【解决方案2】:

如果您的第一个命令运行时间超过一分钟,您的第二个命令可能永远不会看到 00:00 以便每月运行。

尝试更改作业的顺序,以便每月任务有机会在午夜运行。

【讨论】:

  • 该命令只需要几秒钟
  • 还有问题吗?
  • 很遗憾。我最近一直在忽略它。
  • 应该没什么区别,但是你试过命令格式吗? $schedule->command('archivestats')->monthly()->appendOutputTo(public_path().'/logs/'.$logfilename); 可能不相关,但是将您的日志文件放在公共文件夹中是令人担忧的
  • 谢谢,我试过这个,但每五分钟开始。我在 /kunden/xxxxxx_xx/webseiten/websitename.com/artisan33 行得到“输入中的意外字符:'\' (ASCII=92) state=1 br />
    解析错误:语法错误,/kunden/xxxxxx_xx/webseiten/websitename.com/artisan 中的意外 T_STRING 在第 33 行 b>
    "
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-06
  • 1970-01-01
  • 2023-03-04
  • 2012-01-11
  • 2019-04-13
  • 1970-01-01
相关资源
最近更新 更多