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连接,并且操作是可以的
start.php中初始化的连接属于主进程的,主进程fork的子进程会自动继承这个示例,但是子进程无法使用这个实例,原因是服务端返回数据时,每个子进程都可读这个数据,会造成实际混乱。
onXXX回调都是运行在子进程的。请在onXXX等回调中初始化连接,比如onWorkerStart会调中初始化连接。每个子进程初始化自己的连接,这样就不会出错了。
谢谢walkor大大解答