情况
我正在使用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文件中没有任何内容(通常会出现异常).
问题
有没有方便我的方法来了解导致我的工作失败的原因?
在较新的Laravel版本exception
中,failed_jobs
表格中有一列包含您需要的所有信息.感谢cdarken和Toskan指出这一点!
====以下的旧方法
这是我一直在做的事情,但首先 - 确保你有一个失败的工作表!它有详细记录,查找:)
运行该php artisan queue:failed
命令以列出所有失败的作业,然后选择您之后的作业.写下ID.
然后,确保用你的队列停止 supervisorctl stop all duplitron-worker:
最后,确保您的.env设置为APP_DEBUG
= true.
然后跑 php artisan queue:retry {step_job_1_id}
现在手动运行php artisan queue:listen --timeout=XXX
如果错误是结构性的(并且大多数是错误的),则应该在日志文件中使用调试堆栈失败.
祝你好运调试:-)