在 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" 函数中的命令内,调度作业。
我习惯了 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" 函数中的命令内,调度作业。