CI memcached修改,扩展为memcache

2013-06-09 阅读 36

本来CI不支持memcache扩展,只支持memcahed 扩展,修改成memcache扩展。

怎样修改,可以让CI支持memcache扩展。

我们需要做的就是把memcached.php文件里,从156行开始修改为:

if (extension_loaded('memcached')){

$this->_memcached = new Memcached();

}else{

$this->_memcached = new Memcache();

}

foreach (this->\_memcache\_conf as name => $cache_server)

{

if ( ! array_key_exists('hostname', $cache_server))

{

// cache\_server['hostname'] = this->_default_options['default_host']; //坑爹的原代码,没有_default_options属性

cache\_server['hostname'] = this->_memcache_conf['default']['default_host'];

}

if ( ! array_key_exists('port', $cache_server))

{

// cache\_server['port'] = this->_default_options['default_port'];//坑爹的原代码,没有_default_options属性

cache\_server['port'] = this->_memcache_conf['default']['default_port'];

}

if ( ! array_key_exists('weight', $cache_server))

{

// cache\_server['weight'] = this->_default_options['default_weight'];//坑爹的原代码,没有_default_options属性

cache\_server['weight'] = this->_memcache_conf['default']['default_weight'];

}

//导致如果不配置 config/memcache.php文件,执行到this->\_memcached->addServer(cache_server['hostname'],$cache_server['port']);出错(因为此时语句,相当于

$this->_memcached->addServer(‘’,'');然后机器木反应了~

if (extension_loaded('memcached')){

$this->_memcached->addServer(

cache\_server['hostname'], cache_server['port'], $cache_server['weight']

);

}else{

this->\_memcached->addServer(cache_server['hostname'],cache\_server['port'],TRUE, cache_server['weight']);

}

}

}

/**

* Is supported

*

* Returns FALSE if memcached is not supported on the system.

* If it is, we setup the memcached object & return TRUE

*/

public function is_supported()

{

if ( !extension_loaded('memcached') && !extension_loaded('memcache'))

{

log_message('error', 'The Memcached Extension must be loaded to use Memcached Cache.');

return FALSE;

}

$this->_setup_memcached();

return TRUE;

}

}

// End Class

PHP memcache

更新于 2023年03月28日