PHP Redis超时,连接时读取错误?

Far*_*her 7 php redis phpredis

"PHP致命错误:未捕获异常'RedisException',消息'连接时读取错误'"

这里的驱动程序是phpredis

$redis->blpop('a', 0);
Run Code Online (Sandbox Code Playgroud)

这总是在1分钟后超时.我的redis.conf说超时0并$redis->getOption(Redis::OPT_READ_TIMEOUT)返回double(0)

如果我这样做,它永远不会超时 $redis->setOption(Redis::OPT_READ_TIMEOUT, -1);

为什么我需要-1?Redis文档timeout 0在redis.conf中说永远不会让我失望.

"默认情况下,如果客户端闲置很多秒,则Redis的最新版本不会关闭与客户端的连接:连接将永远保持打开状态."

par*_*amr 10

我所知道的当前解决方案是禁用phpredis的持久连接,因为自2011年10月以来它们一直被报告为错误.如果您使用的是php-fpm或其他线程模型,则库会专门禁用持久连接.

通过调整php.ini default_socket_timeout可以降低此错误的频率.

此外,phpredis中的读取超时配置不受普遍支持.标签2.2.3OPT_READ_TIMEOUT引入了该特征(寻找).