PHP使用Redis空间通知psubscribe报错

在默认情况下,php连接redis后使用键空间通知 psubscribe命令过一段时间会报错:

RedisException: read error on connection to 127.0.0.1:6379

这是由于php的配置 default_socket_timeout 造成的。默认情况下是60秒,也就是使用 psubscribe 命令后60秒会出现错误

解决方案有两种
一种是修改 php的配置,可以修改配置文件或者使用命令修改

php.ini
...
default_socket_timeout = -1
...

ini_set('default_socket_timeout', -1);
$redis->psubscribe(['__keyevent@0__:expired'], function ($redis, $pattern, $chan, $msg) {
            // todo 业务逻辑
        });

第二种是设置redis

$redis->setOption(\Redis::OPT_READ_TIMEOUT, -1);
$redis->psubscribe(['__keyevent@0__:expired'], function ($redis, $pattern, $chan, $msg) {
            // todo 业务逻辑
        });
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容