Введение в очереди в Laravel
Не всю работу стоит делать прямо в HTTP-запросе. Отправка письма, ресайз картинки, тяжёлый отчёт могут занимать секунды. Пока они идут, пользователь смотрит на загрузку страницы и ждёт ответ.
Очередь позволяет отложить задачу: контроллер только ставит задание в очередь и сразу отвечает пользователю. Отдельный процесс - worker - потом забирает задания и выполняет их в фоне. Страница остаётся быстрой, тяжёлая работа не блокирует ответ.
Задание описывают классом Job:
что передать в конструктор и что
сделать в методе handle.
В очередь job кладут через
dispatch. Где хранится
очередь - в базе, Redis или
сразу в том же процессе - решает
драйвер в .env.
В следующих уроках настроим драйвер,
создадим Job, заполним handle,
отправим задание через dispatch,
запустим worker и разберём отложенный
запуск. Сейчас важно понять идею:
очередь отделяет «принять запрос»
от «долгая работа».
Какие задачи стоит отдавать в очередь?
Что делает worker?
Чем очередь помогает пользователю страницы?