Ситуация
Я использую Laravel Queues для обработки большого количества медиафайлов, ожидается, что отдельная работа займет минуты (давайте просто скажем до часа).
Я использую Supervisor для запуска моей очереди, и я запускаю 20 процессов за раз. Мой конфигурационный файл супервизора выглядит так:
[program:duplitron-worker] process_name=%(program_name)s_%(process_num)02d command=php /var/www/duplitron/artisan queue:listen database --timeout=0 --memory=500 --tries=1 autostart=true autorestart=true user=duplitron numprocs=20 redirect_stderr=true stdout_logfile=/var/www/duplitron/storage/logs/duplitron-worker.log
В моем duplitron-worker.log
я заметил, что Failed: Illuminate\Queue\CallQueuedHandler@call
возникает изредка, и я хотел бы лучше понять, что именно происходит. Ничего не появляется в моем файле laravel.log (где обычно появляются исключения).
Вопрос
Есть ли удобный способ для меня узнать больше о том, что заставляет мою работу терпеть неудачу?
Вот что я всегда делаю, но сначала – убедитесь, что у вас есть таблица неудачных заданий! Это хорошо документировано, посмотрите!
Запустите команду php artisan queue:failed
чтобы перечислить все неудавшиеся задания и выберите тот, который вам нужен. Запишите идентификатор.
Затем убедитесь, что вы остановили свою очередь с помощью supervisorctl stop all duplitron-worker:
Наконец, убедитесь, что ваша .env настройка для APP_DEBUG
= true.
Затем запустите php artisan queue:retry {step_job_1_id}
Теперь вручную запустите php artisan queue:listen --timeout=XXX
Если ошибка является структурной (и большинство из них), вы должны получить сбой в стеке отладки в файле журнала.
Удачи вам в отладке 🙂