在默认情况下,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 业务逻辑
});