选择语言 :

 Driver_Cache_Driver_Memcache::_connect

连接memcache服务器

null Driver_Cache_Driver_Memcache::_connect( )
File: ./drivers/cache/memcache/memcache.class.php
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]++;
}