Диспетчеризация задания Laravel в планировщике до версии 5.5 - PullRequest
0 голосов
/ 04 апреля 2019

Я привык к 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 Ответ

1 голос
/ 14 апреля 2019

Вы можете создать новую консольную команду:

php artisan make:command CommandName

добавить ее в App \ Console \ Kernal.php:

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

и сделать так, чтобы она вызывалась по расписанию:

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

и внутри вашей команды в функции «handle» отправьте задание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...