连接服务器
null Driver_Cache_Driver_Redis::_connect( )
protected function _connect()
{
if ($this->_redis)return;
if (!$this->config_name)return;
$config_name = $this->config_name;
if (!isset(Cache_Driver_Redis::$redis[$config_name]))
{
$class = 'Redis';
if (!class_exists($class, false))
{
throw new Exception(__('Your redis module of php is not installed, please install the module from http://pecl.php.net/package/redis'));
}
Cache_Driver_Redis::$redis[$config_name] = new $class();
Cache_Driver_Redis::$redis_num[$config_name] = 0;
foreach ($this->servers as $server)
{
$server += array
(
'host' => '127.0.0.1',
'port' => 6379,
'persistent' => true,
'timeout' => 2,
);
if ( $server['persistent'] )
{
$action = 'pconnect';
}
else
{
$action = 'connect';
}
try
{
$time = microtime(1);
$status = Cache_Driver_Redis::$redis[$config_name]->$action($server['host'], $server['port'], $server['timeout']);
$time = microtime(1)-$time;
}
catch (Exception $e)
{
$status = false;
}
if ($status)
{
if (IS_DEBUG)Core::debug()->info('connect cache redis server '.$server['host'].':'.$server['port'] . ' time:'.$time);
break;
}
else
{
if (IS_DEBUG)Core::debug()->error('error connect cache redis server '.$server['host'].':'.$server['port'] . ' time:'.$time);
}
}
}
# 断开引用关系
unset($this->_redis);
# 设置对象
$this->_redis = & Cache_Driver_Redis::$redis[$config_name];
Cache_Driver_Redis::$redis_num[$config_name]++;
}