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

[版本 3.x] session使用memcached的问题

[复制链接]
发表于 2016-8-24 19:12:38 | 显示全部楼层 |阅读模式
完全安装官方的做法:
1. config.php 文件中配置
$config['sess_driver'] = 'memcached';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = '192.168.1.124:11211';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

2.使用
$this->load->library('session');
$this->session->set_userdata('test_item','haha2');

3.出错:
\system\libraries\Session\drivers\Session_memcached_driver.php on line 108
<h4>A PHP Error was encountered</h4>

<p>Severity: Error</p>
<p>Message:  Class 'Memcached' not found</p>
<p>Filename: drivers/Session_memcached_driver.php</p>
<p>Line Number: 108</p>

4.php memcached扩展已装
   extension=php_memcache.dll 版本也对

5.直接使用memcached ,可以使用
$this->load->driver('cache');
$this->cache->memcached->save('foo', 'bar', 1000);
$result = $this->cache->memcached->get_metadata('foo');
结果:
<h2>Array
(
    [expire] => 1472037980
    [mtime] => 1472036980
    [data] => bar
)
</h2>

6.config目录下的memcached.php 配置如下:
$config = array(
        // 'default' => array(
        //         'hostname' => '127.0.0.1',
        //         'port'     => '11211',
        //         'weight'   => '1',
        // ),
        'default' => array(
                'hostname' => '192.168.1.124',
                'port'     => '11211',
                'weight'   => '1',
        ),       
);

7.但是session一用memcached驱动就报错误 如3所示。

8.求助、求助、求助


发表于 2016-8-25 10:29:40 | 显示全部楼层
我觉得你装的是 php_memcache.dll 应该装 memcached
 楼主| 发表于 2016-8-25 11:03:25 | 显示全部楼层
Hex 发表于 2016-8-25 10:29
我觉得你装的是 php_memcache.dll 应该装 memcached

1.直接使用用codeigniter 也是实例化的new Memcached(); 使用没有问题,
2.session用mecached的时候就有问题,
3.我可以装个memcached试试
发表于 2016-8-25 11:29:49 | 显示全部楼层
你这个是比较奇怪,你这是什么版本的 CI?
108 行是什么?
发表于 2016-9-9 10:31:29 | 显示全部楼层
请问你解决了吗 ?  我也是这样的问题,   win系统 没有  mecached扩展 只有 mecache扩展
发表于 2016-9-9 12:06:59 | 显示全部楼层
chaituan 发表于 2016-9-9 10:31
请问你解决了吗 ?  我也是这样的问题,   win系统 没有  mecached扩展 只有 mecache扩展 ...

不要在 windows 下跑 PHP 。。。。。
发表于 2017-9-9 16:05:38 | 显示全部楼层
同楼上的一样,被坑了。

pecl-memcached <=> libmemcached <=> memcached
因为memcached这儿pecl扩展依赖libmemcached这个库,而这个库不支持Windows,所以这个pecl扩展自然不能跑在Windows上.当然,也有可能是pecl-memcached维护者不想支持Windows.

作者:eechen
链接:https://www.zhihu.com/question/60411013/answer/175839378
来源:知乎

总结,Windows 上没办法使用 memcached。

这个是 Linux扩展地址:https://pecl.php.net/package/memcached
发表于 2017-9-9 16:15:25 | 显示全部楼层
一个想法,不知道是否可行?

通过 PHP 类方式实现 Memcached中各种方法。
那么,
$m = new Memcached();
实例化的,将是自定义的PHP类。

php memcached 介绍,
https://secure.php.net/manual/zh/book.memcached.php

可能会费点时间。

本版积分规则