redis总是被中断,产生致命错误,需要怎么处理呢

gongaiorg

ErrorException: Redis::get(): Send of 58 bytes failed with errno=10054 远程主机强迫关闭了一个现有的连接。 in D:\net\vendor\workerman\workerman\Protocols\Http\Session\RedisSessionHandler.php:84

1222 1 1
1个回答

MarkGo

这种很大因素是长时间链接但没数据来往导致被关闭了该链接,定时30秒发送下就好了

  • gongaiorg 2022-03-31

    谢谢,请教一下是在哪个文件里设置哪个配置呢?

  • damao 2022-03-31

    自建的redis?127.0.0.1?

  • gongaiorg 2022-03-31

    我用的push插件,加的有心跳间隔是25s

  • gongaiorg 2022-03-31

    应该是redis的设置最大连接时长限制的吗?

  • MarkGo 2022-03-31

    我是用webman的,webman的redis好像已经实现了心跳包,workman你可以看看redis连接的地方,增加timer来实现心跳,或者做重连方案

  • walkor 2022-03-31

    用的阿里云的redis?

  • gongaiorg 2022-03-31

    是服务器本地安装的redis

  • gongaiorg 2022-03-31

    https://www.workerman.net/q/8156 是要按照这个修改一下吗

  • walkor 2022-03-31

    你的改 vendor/workerman/workerman/Protocols/Http/Session/RedisSessionHandler.php
    public function __construct($config) 方法里最后面加上

    \Workerman\Timer::add(isset($config['ping']) ? $config['ping'] : 55, function () {
        $this->_redis->get('ping');
    });
  • gongaiorg 2022-03-31

    好的 谢谢老大

  • gongaiorg 2022-03-31

    这样处理的确可以了,没有再出现那样的错误了

  • gongaiorg 2022-03-31

    建议框架升级一下吧

  • walkor 2022-03-31

    这个会在下个版本加上

年代过于久远,无法发表回答
🔝