我在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数据库,将导致什么原因导致这些作业无法得到处理?任何帮助表示赞赏。

最佳答案

我遇到了一个小问题,因为我没有将作业添加到默认队列中。

        $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 - 什么会阻止队列中的作业进行处理? [PHP/Laravel 5],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34184043/

10-11 03:33
查看更多