sting_bo 发表于 2015-5-19 22:58:31

有人使用过CI3.0的memcached么,在线等

有人使用过CI3.0的memcached么,我的报错,Fatal error: Class 'Memcached' not found in /var/www/html/prism/app/system/libraries/Session/drivers/Session_memcached_driver.php on line 108
在线等

sting_bo 发表于 2015-5-20 13:33:44

我刚解决了,就是没有实例化memcached,每次调用的时候,先
$this->load->driver('cache');
$this->cached->memcached->is_supported();
就行了,太冷清,唉!
原因是它只在is_susoprted里进行实例化,如下:
        /**
       * Is supported
       *
       * Returns FALSE if memcached is not supported on the system.
       * If it is, we setup the memcached object & return TRUE
       *
       * @return        bool
       */
        public function is_supported()
        {
                if ( ! extension_loaded('memcached') && ! extension_loaded('memcache'))
                {
                        log_message('debug', 'The Memcached Extension must be loaded to use Memcached Cache.');
                        return FALSE;
                }

                return $this->_setup_memcached();
        }

sting_bo 发表于 2015-5-19 23:17:27

有红色的是CI里的,是不是应该是 new Memcache()       
public function open($save_path, $name)
        {
                $this->_memcached = new Memcached();
                $this->_memcached->setOption(Memcached::OPT_BINARY_PROTOCOL, TRUE); // required for touch() usage
                $server_list = array();
                foreach ($this->_memcached->getServerList() as $server)
                {
                        $server_list[] = $server['host'].':'.$server['port'];
                }

                if ( ! preg_match_all('#,?([^,:]+)\:(\d{1,5})(?:\:(\d+))?#', $this->_config['save_path'], $matches, PREG_SET_ORDER))

sting_bo 发表于 2015-5-19 23:00:06

调用的地方:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Test extends CI_Controller{

    public function __construct()
    {
      parent::__construct();
    }

    public function index(){
      $this->load->driver('cache');
      //$str = $this->cache->memcached->save('user', 1, 10);
      //echo $this->cache->memcached-get('user');
    }
}

sting_bo 发表于 2015-5-19 22:59:15

config.php文件配置
//$config['sess_driver'] = 'files';
$config['sess_driver'] = 'memcached';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
//$config['sess_save_path'] = NULL;
$config['sess_save_path'] = '127.0.0.1:11211';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

sting_bo 发表于 2015-5-19 23:01:03

使用的ubuntu,已经安装memcached

sting_bo 发表于 2015-5-19 23:18:05

我自己测试没有问题。。。。。
<?php
$mem = new Memcache();
$mem->connect("127.0.0.1", '11211');
$val = "This is a memcache testing";
$key = md5($val);
//$mem->set($key, $val, 0, 120);
$mem->set('name','stign',0,30);

if (($k = $mem->get($key))) {
    echo 'from cache:' .$k;
} else {
    echo 'normal';
}

sting_bo 发表于 2015-5-20 09:07:57

我去 等了一晚上 没有人啊太冷清了吧

greedefoxes 发表于 2015-5-20 09:08:48

sting_bo 发表于 2015-5-20 09:07
我去 等了一晚上 没有人啊太冷清了吧

{:soso_e103:}佩服啊 只可惜我帮不上忙

一叶扁舟 发表于 2015-5-20 09:42:08

本帖最后由 一叶扁舟 于 2015-5-20 09:44 编辑

你memcache是不是版本安装错了
new memcache是pecl扩展库版本
new memcached是libmemcached版本这俩版本存在有历史原因,尽量用memcached


ahcheqiu 发表于 2015-5-20 13:06:46

装完memcache还要装memcache的php扩展呀
sudo apt-get install php5-memcached
页: [1] 2
查看完整版本: 有人使用过CI3.0的memcached么,在线等