“PHP fatal error :未捕获的异常‘RedisException’,消息为‘连接读取错误’”
这里的驱动是phpredis
$redis->blpop('a', 0);
这总是在约 1 分钟后超时。我的 redis.conf 显示超时 0 并且 $redis->getOption(Redis::OPT_READ_TIMEOUT)
返回 double(0)
如果我这样做,它永远不会超时 $redis->setOption(Redis::OPT_READ_TIMEOUT, -1);
为什么我需要-1? Redis 文档说 redis.conf 中的 timeout 0
永远不会让我超时。
“默认情况下,如果客户端空闲数秒,Redis 的最新版本不会关闭与客户端的连接:连接将永远保持打开状态。”
最佳答案
我知道的当前解决方案是禁用 phpredis 的持久连接,因为它们一直是 reported as buggy since October 2011 .如果您使用的是 php-fpm 或其他线程模型,库 specifically disables persistent connections .
通过 adjusting the php.ini default_socket_timeout
value 可能会降低此错误的频率.
此外,phpredis 中的读取超时配置并未得到普遍支持。该功能(查找 OPT_READ_TIMEOUT
)是 introduced in tag 2.2.3 .
关于PHP Redis超时,连接读取错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18072407/