laravel horzion 问题
laravel horzion 有一个很奇怪的问题 这两个都是同一个redis实例 但是偶尔有一个就是值不一致 不知道是怎么导致的
有人提过issue github.com/laravel/horizon/issues/...
但是没有去解决这个问题 就是pending_jobs中这个任务完成了 没有移除 但是completed_jobs已经写入了这个job的uuid
我也测试过这个问题 在这个hash里面 如果本来没有这个key值 比如说ccc 在pending的时候没有 但是完成后 就会写入ccc这个key 但是如果ccc已经存在 就感觉没有修改一样 但是$this->connection() 这个去拿的时候是被修改过的 但是用Redis::connection() 去拿的时候就还是原来的值
所以我做了对比 ccc这个key在一开始就存在 completed_at这个值只有在完成的时候存在 就会存在一种情况 ccc没有被修改 但是 completed_at 已经写入进去了 然后pending_jobs 这个有序集合里面应该需要移除这个$payload->id() 成员 但是没有移除掉 就是 上图中的completed这个方法里面的 的 $this->removeJobReference这个方法 这个是移除pending_jobs 中的这个uuid
$this->storeJobReference这个是把uuid存储到这个completed_jobs有序集合里面 这个是写入进去了 这就很奇怪
这种情况是偶然的 就是偶尔会出现一次
推荐文章: