Запуск worker очереди в Laravel
После dispatch задания
лежат в очереди и ждут исполнителя.
Исполнитель - команда Artisan
queue:work. Её запускают
в отдельном терминале (на сервере -
как долгоживущий процесс).
php artisan queue:work
Worker слушает очередь, берёт
очередной Job и вызывает его
handle. Пока терминал
с командой открыт, задания
обрабатываются. Закрыли процесс -
очередь снова только копится
(при драйвере database
или Redis).
При QUEUE_CONNECTION=sync
worker по сути не нужен: задания
уже выполняются в момент
dispatch. Для проверки
настоящей очереди поставьте
database, сделайте
миграцию jobs, задиспатчьте
Job и оставьте queue:work
запущенным.
В логах терминала worker видно,
какой Job взяли и успех или ошибка.
Если handle падает -
задание может уйти в failed jobs
(отдельная настройка). Для учёбы
достаточно увидеть, что после
диспатча worker вызвал ваш код.
Запустите php artisan queue:work
в отдельном терминале.
Задиспатчьте Job и убедитесь,
что worker выполнил handle.
Что будет с очередью
database, если worker
не запущен?