我习惯于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();
不起作用。谢谢!
答案 0 :(得分:1)
您可以创建一个新的控制台命令:
SELECT TOP 1 WITH TIES Id, Summary, Component, Status
FROM Table
ORDER BY ROW_NUMBER() OVER(PARTITION BY Component, Status ORDER BY Id DESC)
将其添加到App \ Console \ Kernal.php:
php artisan make:command CommandName
并让您定期调用它:
protected $commands = [
Commands\CommandName::class,
];
并在“处理”功能的命令中,调度作业。