用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2847|回复: 2
收起左侧

[程序 App] CI 使用 memcache

[复制链接]
发表于 2014-10-15 09:09:58 | 显示全部楼层 |阅读模式
codeigniter 2.2.0 对memcache的使用,貌似存在一点bug,官方暂未修补,暂时需要改动到其基类,方法如下,仅供参考:
1. system\libraries\Cache\drivers\Cache_memcached.php
about line 165:
$this->_memcached = new Memcached();
改为:
if(extension_loaded('memcached')){
$this->_memcached = new Memcached();
}elseif (extension_loaded('memcache')){
$this->_memcached = new Memcache();
}else{
log_message('error', 'At least one memcache extension need be loaded!');
}
(以上是参考某个大神的分享)
about line 201
if ( ! extension_loaded('memcached'))
改为:
if ( ! extension_loaded('memcached') && ! extension_loaded('memcache') )

2. 增加 application/config/memcached.php 文件 (有多个服务器则自己增加多个元素)
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
* MC配置文件
* Create at 2014-10-09
*/
$memcached = array(
            'server1' => array(
                    'hostname'        => '127.0.0.1',
                    'port'                => '11211',
                    'weight'        => 1
                )
);

$config['memcached'] = $memcached;

3. 修改 application/config/config.php 在最后增加
// Memcache enable
$config['memcache_enable'] = true;

4. 修改 application/config/autoload.php 大概在83行
$autoload['config'] = array('memcached');

5. 在你要使用的地方,加上
$this->load->driver('cache');
增加一个mc则使用:
$this->cache->memcached->save('foo', 'baddr', 10);
获取一个mc则使用:
$getCache = $this->cache->memcached->get('foo');

评分

参与人数 1威望 +5 收起 理由
Hex + 5 赞一个!

查看全部评分

发表于 2014-10-15 17:53:06 | 显示全部楼层
感谢分享。

不过,这个地方应该是 CI 的 memcache 只支持 memcached 这个扩展。应该不能算是 BUG 吧。
 楼主| 发表于 2014-10-16 09:17:50 | 显示全部楼层
Hex 发表于 2014-10-15 17:53
感谢分享。

不过,这个地方应该是 CI 的 memcache 只支持 memcached 这个扩展。应该不能算是 BUG 吧。 ...

嘿嘿,我那天就觉得写错了,嗯,这不算bug;
希望CI越来越完善。

本版积分规则