【发布时间】: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