Драйвер очереди в Laravel
Где хранится очередь, задаёт
переменная QUEUE_CONNECTION
в .env. От неё зависит,
выполнятся ли задания сразу
или будут ждать worker.
Значение sync значит:
очередь «синхронная». Job
выполняется сразу в том же
запросе, отдельный worker
не нужен. Так удобно на старте
учёбы: код с dispatch
уже написан, а инфраструктуру
очереди можно не поднимать.
Но страница снова ждёт, пока
закончится handle.
QUEUE_CONNECTION=sync
Для настоящей фоновой очереди
на учёбе часто ставят
database: задания лежат
в таблице базы. Тогда в .env
пишут QUEUE_CONNECTION=database
и создают таблицы очереди миграцией
(в современных версиях Laravel
для этого есть готовая команда
Artisan). После миграции появится
таблица вроде jobs - в неё
worker будет забирать задания.
QUEUE_CONNECTION=database
Пока стоит sync, worker
не слушает очередь. Когда перейдёте
на database, без
queue:work задания будут
только копиться в таблице. Драйвер
и worker работают в паре.
Чем sync отличается
от database?
Поставьте в .env
QUEUE_CONNECTION=database
(или оставьте sync
для первых экспериментов).
Зачем при драйвере
database нужна
миграция таблицы jobs?