我已经习惯了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;
/ $this->dispatch(new AppointmentReminder());
然后Kernal.php
,但这似乎也没有做到这一点。此外,(new AppointmentReminder())->dispatch();
不起作用。谢谢!
您可以创建一个新的控制台命令:
php artisan make:command CommandName
将其添加到App \ Console \ Kernel.php:
protected $commands = [
Commands\CommandName::class,
];
让你安排打电话给它:
$schedule->command('CommandName')->dailyAt('08:00');
并在“句柄”功能中执行命令,调度作业。