Найчастіше - бо ніхто їх не виконує. Черга лише зберігає завдання; виконує їх окремий процес-воркер:
php artisan queue:work
У свіжому застосунку Laravel підключення за замовчуванням - database (QUEUE_CONNECTION=database), тож завдання просто накопичуються в таблиці jobs, доки воркер не запущено.
Що ще перевірити:
- Інша черга. Завдання з
->onQueue('emails')не візьме воркер, що слухає лишеdefault: потрібен--queue=emails,default. - Інше підключення. Код пише в
redis, а воркер слухаєdatabase. - Старий код.
queue:workтримає застосунок у пам'яті й не бачить змін, доки його не перезапустити (php artisan queue:restart).
На сервері воркер має працювати постійно, тож його запускають під Supervisor чи systemd, які піднімуть процес після падіння. Для розробки є queue:listen: він повільніший, зате перечитує код на кожне завдання.