什么会阻止队列中的作业处理? [PHP / Laravel 5]
Posted
技术标签:
【中文标题】什么会阻止队列中的作业处理? [PHP / Laravel 5]【英文标题】:What would prevent jobs in a queue from processing? [PHP / Laravel 5] 【发布时间】:2016-03-15 00:50:27 【问题描述】:我在 Laravel 5 中设置了一个队列来删除公司和相关记录。每次发生这种情况时,后端都会发生大量工作,因此队列是我的最佳选择。
我设置了我的config/queue.php
文件和我的.env
文件,以便使用database
驱动程序。我正在使用Queue::pushOn
方法将作业推送到名为company_deletions
的队列中。例如。
Queue::pushOn('company_deletions', new CompanyDelete($id));
其中CompanyDelete
是使用php artisan command:make CompanyDelete --queued
创建的命令
我已尝试使用以下命令处理我的队列:
php artisan queue:work
php artisan queue:work company_deletions
php artisan queue:listen
php artisan queue:listen company_deletions
php artisan queue:work database
php artisan queue:listen database
有时在查看上述命令的输出时,我会收到以下错误:
[InvalidArgumentException]
No connector for []
即使我没有收到错误,由于某种原因,我也无法让它实际处理作业。当我查看我的jobs
表时,我可以看到队列中的作业,但是attempts
列显示0,reserved
显示0 并且reserved_at
为空。我错过了一些步骤吗?我已经多次查看文档,但无法终生找出问题所在。我也没有在 laravel 错误日志中看到任何内容。一旦这些作业在jobs
数据库中,什么会阻止它们被处理?任何帮助表示赞赏。
【问题讨论】:
你应该公开你的config/queue.php
查看日志,看看有没有什么错误……
如果 laravel 处理失败,它可以记录,它可能会帮助您调试。更多-laravel.com/docs/5.0/queues#failed-jobs
没有日志很难调试这个问题
【参考方案1】:
我遇到了一个类似的问题,因为我没有在默认队列中添加作业..
$job = (new EmailJob(
$this->a,
$this->b,
$this->c,
$this->d,
$e
))->onQueue('emails');
那我得听具体的队列:
php artisan queue:listen --queue=emails
在你的情况下是
php artisan queue:listen --queue=company_deletions
【讨论】:
以上是关于什么会阻止队列中的作业处理? [PHP / Laravel 5]的主要内容,如果未能解决你的问题,请参考以下文章
如何防止 Elastic Beanstalk 上长时间运行的作业在不阻止缩减的情况下终止?