Redis 提示 protocol error, got 'u' as reply type byte 解决方案
遇到一个奇怪的问题,在 php 中使用 workerman 或者传统 pcntl_fork 的开启子进程时 大约十几分钟就会出现一段异常报错 protocol error, got 'u' as reply type byte 初步诊断是redis提示的 大致意思是 协议错误,得到'u'作为回复类型字节 。异常信息protocol error, got 'u' as reply type byte通过代码排查以及报错提示初步判断是redis的问题原因分析 传统 cli 下不会出现这个问题,只有 workerman 下以及 pcntl_fork 的开启子进程时 十几分钟后才会出现。 已知 workerman 底层使用的也是 pcntl_fork 我们直接分析这个函数。 pcntl_fork 函数 先创建主进程然后在根据需要创建N个子进程,而redis使用 单例模式 或者使用 static 来进行保存连接对象时候并且在主线程内有创建这个连接,那么就会出现以上 protocol error, got 'u' as reply type byte 错误 这种异常一般称为...