无法使用REDIS

3p大法好

3X版本 在Application/MyApp/Redis/Reids.php 下 写了个连接redis的代码 如下

public function __construct($config = array()){
            self::$redis = new \Redis();
            self::$redis->pconnect($config,$config);
      }
        return self::$redis;
    }

然后在MyApp/start.php里面使用

$config = array(
    'host'=>'127.0.0.1',
    'port'=>6379,
    'timeout'=>1,
    'database'=>0
);
$redis = new Redis\Redis($config);

报错
PHP Fatal error: Uncaught exception 'RedisException' with message 'Redis server went away' in web/tom-workerman/Applications/MyApp/start.php:50 Stack trace:
请问这个是什么原因? 直接在start.php里面写redis连接,并且操作是可以的

7127 2 0
2个回答

walkor 打赏

start.php中初始化的连接属于主进程的,主进程fork的子进程会自动继承这个示例,但是子进程无法使用这个实例,原因是服务端返回数据时,每个子进程都可读这个数据,会造成实际混乱。

onXXX回调都是运行在子进程的。请在onXXX等回调中初始化连接,比如onWorkerStart会调中初始化连接。每个子进程初始化自己的连接,这样就不会出错了。

  • 暂无评论
3p大法好

谢谢walkor大大解答

  • 暂无评论
年代过于久远,无法发表回答
×
🔝