【发布时间】:2017-01-13 10:35:15
【问题描述】:
我对 php artisan queue::work 命令感到不安。
我的命令不起作用,但我的作业已插入作业表但从未执行。
我正在为队列使用 mongodb 驱动程序。
我做错了什么请建议我。
【问题讨论】:
我对 php artisan queue::work 命令感到不安。
我的命令不起作用,但我的作业已插入作业表但从未执行。
我正在为队列使用 mongodb 驱动程序。
我做错了什么请建议我。
【问题讨论】:
花了半天时间搜索后,我注意到队列不在维护模式下运行。你必须把--force放在最后。
--force 强制工作器在维护模式下运行
所以运行 php artisan queue:work --force 以便在维护模式下运行队列。
详情请见https://laravel.com/docs/8.x/configuration#maintenance-mode。
【讨论】:
我遇到了类似的问题。 Jobs 被插入到 MySql DB 中的 jobs 表中,但 php artisan queue:work 没有选择这些。
在我的例子中,队列被命名为(作业表中的队列列值)“优先级”。
所以我不得不以不同的方式运行 queue:work 命令:
php artisan queue:work --daemon --queue=priority
但请注意,上面的命令只执行priority队列中的作业;如果需要,您可以添加更多队列名称,例如 --queue=priority,queue_3,queue_4
我期待 queue:work 没有 --queue= 值来获取任何待处理的工作。
事实证明,我错了。 ¯\_(ツ)_/¯
希望这对其他人有所帮助。
【讨论】:
由于这个帖子有点老了,我会分享我的经验。
有一个不明显但与此条件相对应的错误。你可以检查你的表 jobs,如果你的 queue:work 运行良好,那么在 Laravel 中,这些工作应该已经被删除了,所以问题是你的队列无法处理你表中的最高工作。可能是db中可序列化数据的问题。
要解决它,您可以尝试清除表jobs 并从~0 重置'增量id'。另一方面,您也可以检查您的数据序列。这在重置表后可能会有所帮助。
【讨论】: