本来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