РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗pplrSpQuHd 173 of 210 menu

Метод handle у Job в Laravel

Вся полезная работа Job живёт в методе handle. Его вызовет worker (или sync- драйвер), когда дойдёт очередь до этого задания. Конструктор только принимает данные - модель, id, путь к файлу.

Пример: job получает пользователя и в handle пишет в лог (вместо реальной почты - для учёбы):

<?php namespace App\Jobs; use App\Models\User; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Queue\Queueable; use Illuminate\Support\Facades\Log; class SendWelcomeEmail implements ShouldQueue { use Queueable; public function __construct( public User $user ) {} public function handle(): void { Log::info('Welcome for '.$this->user->email); } } ?>

Вместо Log::info можно отправить Mailable, дернуть API, сохранить файл - что угодно, что не должно блокировать ответ страницы. Главное: handle должен завершаться сам; долгие циклы без нужды лучше дробить на несколько job.

Данные из конструктора доступны как свойства объекта ($this->user в примере). Laravel сериализует модель при постановке в очередь и снова достанет её, когда worker вызовет handle.

В handle своего Job запишите сообщение в лог.

Передайте в конструктор модель или id и используйте их в handle.

Кто вызывает handle - контроллер или worker?

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить