Laravel “没有预定的命令准备好运行。

2022-08-30 12:21:21

我设置了以下Laravel命令:

protected function schedule(Schedule $schedule) {
        $schedule->command('command:daily-reset')->daily();
        $schedule->command('command:monthly-reset')->monthly();
}

然后,在我的服务器上,我已将 cron 作业设置为每天运行一次(在 00:00)。

0 0 * * * php /home/privates/public_html/staging/current/artisan schedule:run

我的 cron 作业每晚都成功运行,但日志只是说:“没有计划的命令准备好运行。

我做错了什么?我希望我的命令每晚都在运行。daily

谢谢!


答案 1

当您运行时

php artisan schedule:run

在存储项目的服务器中,您可以看到所有命令都使用输出运行,如下所示:

"Running scheduled command: '/usr/local/bin/php' 'artisan' cache:update > '/dev/null' 2>&1 &"

但仅当当前时间是调度命令的确切时间时。否则,您将看到以下输出:

"No scheduled commands are ready to run."

例如,如果将命令计划为每五分钟一次,并在 09:07 点运行该命令,您将看到没有计划的命令,但如果在 09:10 中运行它,您将看到命令正在运行。

通过这种方式,您可以将命令安排为每5分钟运行一次,仅用于调试目的:

$schedule->command('command:daily-reset')->everyFiveMinutes();

然后观察运行时是否有任何错误并最终修复它。对我来说,问题是我还没有安装GuzzleHttp(可惜),所以修复程序只是在终端中运行这个:

composer require guzzlehttp/guzzle

答案 2

我意识到对我来说,问题是以下链接方法:

->withoutOverlapping() 

删除该方法后,我的命令开始运行并被守护进程找到。

我认为该方法可能存在错误,但我的项目现在可能需要一些重叠,所以很酷。


推荐