【发布时间】: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 确信他们的工作没有运行,但它只是在没有错误检查的情况下运行并且没有生成输出。