【问题标题】:Laravel Scheduler running every minute regardless of specified schedule无论指定的时间表如何,Laravel 调度程序每分钟运行一次
【发布时间】:2020-09-14 17:23:55
【问题描述】:

我在 crontab 中触发了 Laravel 调度命令:

* * * * * php /home/forge/site/artisan schedule:run

这是通过 Forge 设置的。

然后,在app/Console/Kernel.php 中,我将触发我的工作以每小时运行一次:

$schedule->job(new GetRecentArtists())->hourly();

但它仍然每分钟都在运行。

我的理解是 artisan 命令需要每分钟运行一次,这样才能检查作业计划以查看作业是否需要根据其特定计划触发。

更新

我已尝试按照 Sahidul 评论中的建议重新启动队列,并确认没有任何内置计划(每小时、每天等)阻止它每分钟运行。

当我从 crontab 中删除计划并通过 php artisan schedule:run 运行它时,我得到“没有计划的命令准备好运行”,但任务仍然运行。

【问题讨论】:

  • 你的理解是正确的。它应该工作。尝试重新启动队列(工匠队列:重新启动)。另外,你可以试试 hourlyAt 方法。
  • 谢谢@SahidulHassanRazon - 我试过了,但没有运气,并在问题中添加了一些信息。

标签: php laravel cron scheduler


【解决方案1】:

这是一条红鲱鱼。我的日志消息显示作业在作业的 __construct 方法中运行,而不是在 handle 方法中运行。

作业在调度程序运行时构建,然后添加到队列中以按计划执行 - 因此构造方法被立即调用,但实际上直到预定时间才处理作业。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2012-08-08
    相关资源
    最近更新 更多