Laravel 6 任务计划程序问题:命令未执行

问题描述 投票:0回答:1

我遇到了 Laravel 6 任务调度程序的问题,其中计划的命令未按预期运行。

我在两个不同的类中有两个方法,我想使用 Laravel 的任务调度程序自动运行它们。为了实现这一点,我在 app/Commands 文件夹中创建了两个文件,每个文件都包含一个 $signature 变量和一个 handle() 方法。

这是命令文件之一 (AutoCommand.php) 中的 handle() 方法的示例:

public function handle()
{
$autoController = new AutoController();
$autoController->autoMethod();
$this->info('The task is completed');
}

这是我定义时间表的 Kernel.php 文件:

protected function schedule(Schedule $schedule)
{
// This command should run every 3 hours
$schedule->command('first:command')->cron('0 */3 * * *');
// This command should run daily at midnight
$schedule->command('second:command')->daily(); 
}

当我运行 php artisan Schedule:run 时,我收到以下错误消息:

没有计划的命令准备运行。

Laravel 版本:34 年 6 月 20 日
PHP 版本:7.4.33(cli)

我已尝试根据 Laravel 文档调整计划选项,但问题仍然存在。

将计划更改为每分钟运行一次 (->everyMinute()) 效果很好,但我特别需要一个命令每 3 小时运行一次,另一个命令每天运行一次。

我正在寻求帮助来解决 Laravel 任务调度程序的此问题。

laravel cron scheduled-tasks laravel-6 php-7.4
1个回答
0
投票
如果仅自动启动,并且使用预定命令在正确的时间启动,则

schedule:run
将起作用。为此,您应该在 cron 中创建一条记录。执行
crontab -e 
并输入类似

的代码
* * * * * cd /path/to/your/project && php artisan schedule:run >> /dev/null 2>&1

然后保存,cron会自动刷新,无需重新加载

我猜它是这样工作的,因为schedule:run将执行时的cron规则与当前时间进行比较,如果匹配,则运行,否则返回

没有计划的命令准备运行

但是由于你手动运行命令,你没有机会完美地进入计时,所以它失败了

PS:如果你不想处理 cron,你也可以尝试运行

php artisan schedule:work

© www.soinside.com 2019 - 2024. All rights reserved.