在 5.5 之前的调度程序中调度 Laravel 作业

Dispatching a Laravel job in scheduler, pre-5.5

我习惯了 Laravel 5.5+ 可以调用 $schedule->job(new ExampleJob); 来解雇工作,这在 5.4 中是不可用的。我正在尝试做这样的事情:

$schedule->call(function () {
    dispatch(new AppointmentReminder);
})->dailyAt('08:00');

但作业未启动。我已经确认这是在正确的时间调用的。我猜 dispatch() 方法在 App\Console\Kernal.php 中不可用?有谁知道 5.4 调度程序中调度作业的官方方式?这是一个遗留代码库,所有作业都内联在 Kernal.php 中,这完全是一团糟。更不用说这是一项相当复杂的工作。

我确实尝试了 use Illuminate\Foundation\Bus\DispatchesJobs;/use DispatchesJobs;,然后在 Kernal.php 中尝试了 $this->dispatch(new AppointmentReminder());,但这似乎也没有奏效。此外,(new AppointmentReminder())->dispatch(); 不起作用。谢谢!

您可以创建一个新的控制台命令:

php artisan make:command CommandName

将其添加到 App\Console\Kernal。php:

protected $commands = [
Commands\CommandName::class,      
];

并让您定期调用它:

$schedule->command('CommandName')->dailyAt('08:00');

并在 "handle" 函数中的命令内,调度作业。