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

时间:2019-04-04 18:53:04

标签: php laravel laravel-5 cron laravel-5.4

我习惯于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();不起作用。谢谢!

1 个答案:

答案 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,      
];

并在“处理”功能的命令中,调度作业。