连接memcache服务器
null Driver_Cache_Driver_Memcache::_connect( )
protected function _connect()
{
if ($this->_memcache)return;
if (!$this->config_name)return;
$config_name = $this->config_name;
if (!isset(Cache_Driver_Memcache::$memcaches[$config_name]))
{
if (null === Cache_Driver_Memcache::$_memcached_mode)
{
if (function_exists('extension_loaded'))
{
# 优先采用memcached扩展
if (extension_loaded('memcached'))
{
Cache_Driver_Memcache::$_memcached_mode = true;
}
elseif (extension_loaded('memcache'))
{
Cache_Driver_Memcache::$_memcached_mode = false;
}
else
{
throw new Exception(__('The system did not load memcached or memcache extension'));
}
}
}
if (Cache_Driver_Memcache::$_memcached_mode)
{
$memcache = 'memcached';
}
else
{
$memcache = 'memcache';
}
Cache_Driver_Memcache::$memcaches[$config_name] = new $memcache();
Cache_Driver_Memcache::$memcaches_num[$config_name] = 0;
if (Cache_Driver_Memcache::$_memcached_mode)
{
Cache_Driver_Memcache::$memcaches[$config_name]->addServers($this->servers);
}
else
{
foreach ($this->servers as $server)
{
$server += array('host' => '127.0.0.1', 'port' => 11211, 'persistent' => true);
Cache_Driver_Memcache::$memcaches[$config_name]->addServer($server['host'], $server['port'], (bool)$server['persistent'], $server['weight'], 1, 15, true, 'Cache_Driver_Memcache::failure_addserver');
if (IS_DEBUG)Core::debug()->info('add memcache server '.$server['host'].':'.$server['port']);
}
}
}
# 断开引用关系
unset($this->_memcache);
# 设置memcache
$this->_memcache =& Cache_Driver_Memcache::$memcaches[$config_name];
Cache_Driver_Memcache::$memcaches_num[$config_name]++;
}