Laravel 调度程序自定义 Cron 表达式不起作用
Posted
技术标签:
【中文标题】Laravel 调度程序自定义 Cron 表达式不起作用【英文标题】:Laravel Scheduler Custom Cron Expression Not Working 【发布时间】:2017-11-04 15:43:09 【问题描述】:我有两个 laravel 调度程序表达式调用,如下所示:一个带有自定义 cron 表达式,每 3 小时运行一次,另一个每小时运行一次。
每次,每小时调度程序都会运行,但不会运行自定义 cron 。它曾经工作,但停止工作。如果我直接从任何函数调用 Poster1::post(),它仍然有效。
能否向我解释为什么这不起作用,早先?
第一调度器:
$schedule->call(function ()
try
Poster1::post();
catch (Exception $e)
)->cron('0 */3 * * *');
第二个调度器:
$schedule->call(function ()
try
Poster2::post();
catch (Exception $e)
)->hourly();
【问题讨论】:
很难说没有看到其余的代码。您可能会做的实际上是在(当前为空的)catch
块中调试某些内容。此外,try
之前的调试可以告诉您是否甚至触发了作业。
通过在运行时添加日志来验证 cron 作业是否首先被执行。不妨在 catch 块中添加一个,看看是否有任何异常被抛出。
【参考方案1】:
您可以使用 Laravel 调度程序函数每 3 小时运行一次。
$schedule->call(function ()
try
Poster1::post();
catch (Exception $e)
)
->hourly()
->when(function()
return intval(date('H')) % 3 === 0;
);
【讨论】:
谢谢你的提示,我会试试这个并报告:) 很高兴我能帮上忙。考虑将此答案标记为解决方案,以便其他用户也可以找到它。 :) 效果很好!谢谢!以上是关于Laravel 调度程序自定义 Cron 表达式不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 队列(数据库驱动程序)+ Cron 作业(任务调度程序)堆叠并且在服务器崩溃后不再发送