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

标签 php redis phpredis

“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/

相关文章:

php - 如何在 Google App Engine 上安装/使用 PhpRedis?

PHP练习题练习?

java - 我应该/如何将我的 JWT token 存储在 redis 中,以便我可以看到当前的用户 session ?

python - 如何在测试 FastAPI 应用程序时触发生命周期启动和关闭?

ruby-on-rails - Rails 到 Labview 网络连接

php - 在 PHP 上转储和恢复 Redis (predis)

php - phpredis 库中 Redis 函数 ZUNIONSTORE() 的方法是什么?

php htaccess 重定向到 Bootstrap 文件可防止 css 文件等出现 404 错误

php - 强制类型和内容类型

php - 使用 JOIN+OR 语句将 2 个 mysql 查询合并为一个