redis 连接报错read error on connection解决
在使用redis队列处理的时候,有时候队列过长会遇到超时的情况。
原因分析:
查看了下php.ini文件里面有个参数default_socket_timeout = 60,就是这个配置导致redis过60秒会自动断开。
这个配置是什么意思?default_socket_timeout是socket流的超时参数,即socket流从建立到传输再到关闭整个过程必须要在这个参数设置的时间以内完成,如果不能完成,那么PHP将自动结束这个socket并返回一个警告。
由于php得redis扩展是基于php 的socket方式实现,因此该参数值同样会起作用。在redis里面brpop会建立一个socket流,如果这个socket流建立之后超过特定的时间都没有返回则会自动结束该socket流。
解决办法:
一、
动态修改 php.ini , 在连接redis处把 default_socket_timeout 这个参数设置成-1 不超时即可。
ini_set('default_socket_timeout', -1);
二、
设置 redis 的超时时间为不超时:
$redis->setOption(\Redis::OPT_READ_TIMEOUT, -1);
$redis = new Redis(); $redis->connect('127.0.0.1', 6379); $redis->setOption(\Redis::OPT_READ_TIMEOUT, -1);
摘自:https://www.cnblogs.com/qichao123/p/16599485.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2018-09-30 Redis hyperloglog去重复统计
2018-09-30 Redis缓存雪崩
2018-09-30 Redis缓存击穿及php防止缓存击穿demo
2018-09-30 布隆过滤器详解 php-redis 布隆过滤器(在业务里可防止缓存穿透)