有人使用过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在线等
我刚解决了,就是没有实例化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();
}
有红色的是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))
调用的地方:
<?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');
}
}
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;
使用的ubuntu,已经安装memcached 我自己测试没有问题。。。。。
<?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
我去 等了一晚上 没有人啊太冷清了吧
{:soso_e103:}佩服啊 只可惜我帮不上忙
本帖最后由 一叶扁舟 于 2015-5-20 09:44 编辑
你memcache是不是版本安装错了
new memcache是pecl扩展库版本
new memcached是libmemcached版本这俩版本存在有历史原因,尽量用memcached
装完memcache还要装memcache的php扩展呀
sudo apt-get install php5-memcached
页:
[1]
2