laravel 队列在pending不执行, 队列不消费

执行php artisan queue:work 后任务始终在pending里面不执行. 这个问题很莫名奇妙找不到问题
后来发现是redis库的问题
在job文件构造方法加入 Redis::select(0);

2022年7月21日更新

不是redis的问题(下面有最新更新), 是horizon的问题, 需要再执行php artisan horizon
重要的事情说三遍
执行: php artisan horizon
执行: php artisan horizon
执行: php artisan horizon

   /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct(array $data)
    {
        Redis::select(0);
    }

2022年8月6日 更新

突然又莫名其妙的不执行了, 经过一天的排查, 发现在php artisan queue:work 启动的时候会 执行框架的一些文件, 而我在文件里面 切换了redis 10库. 所以消费队列就去 redis 10库进行消费, 而我队列的数据都存储在redis 0库, 导致队列一直在pending不执行

2022年9月30日 更新 (未解决)

项目正常跑了3个月. 突然在毫无征兆的情况下出现: Model在队列里面查询数据为空(实际情况是该数据一直存在), 经过大量的测试复现了下面2种情况
第一种情况: $order = Order::query()->where(['id' => $order_id])->first(); 执行之后 $order为空, 2秒后再次执行, $order 有值
第二种情况: $order = Order::query()->where(['id' => $order_id])->first(); 执行之后 $order有值, 隔几分钟后再次执行 $order 为空
只有在队列里面才出现, 其它业务是正常的. mysql 没有报错. 队列也没有报错.

文章传送门: Model在队列查询数据为空

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容