我正在实施一个处理上传文件的命令。
这些文件最多可包含300MB的数据,因此作业需要排队,我还希望完成这项工作需要一段时间。
我的问题是,当我运行php artisan queue:listen
时,它从队列中获取作业,开始正常处理它,但在大约20秒后,它会冻结。该作业不会启动任何异常,也不会继续,因此不会从队列中删除它。
我正在使用database
驱动程序。我在这里遗漏了什么?
答案 0 :(得分:1)
php artisan queue:listen
不会为用户输出错误。运行php artisan queue:work
,它将输出错误。此命令仅在队列中运行一个进程。因此,您需要确保下一个进程是您要调试的进程。
答案 1 :(得分:1)
也许它不会冻结,但是当您运行php artisan queue:work或php artisan queue:listen命令后,在命令行界面中什么都没看到时,它似乎冻结了。
就我而言,
//通过Coomand行界面上的队列名称执行Laravel队列->
我正在使用运行命令
php artisan队列:工作
没有在作业表中运行我排队的作业。
然后我声明,它仅适用于队列列值为='default'的作业 而且我给了类似sendemail,inboxemail等的名称。
因此,当我在作业表的队列列中将此其他值更改为“默认”时, 当我打开cli和php artisan队列时,这项工作立即运行: 命令处于活动状态。
因此,如果您只想按队列名称运行特定队列,请运行命令->
php artisan队列:收听--queue = sendemail
或
php artisan队列:收听--queue = inboxemail