hrboy 发表于 2016-8-24 19:12:38

session使用memcached的问题

完全安装官方的做法:
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
(
    => 1472037980
    => 1472036980
    => 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.求助、求助、求助


Hex 发表于 2016-8-25 10:29:40

我觉得你装的是 php_memcache.dll 应该装 memcached

hrboy 发表于 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试试

Hex 发表于 2016-8-25 11:29:49

你这个是比较奇怪,你这是什么版本的 CI?
108 行是什么?

chaituan 发表于 2016-9-9 10:31:29

请问你解决了吗 ?我也是这样的问题,   win系统 没有mecached扩展 只有 mecache扩展

Hex 发表于 2016-9-9 12:06:59

chaituan 发表于 2016-9-9 10:31
请问你解决了吗 ?我也是这样的问题,   win系统 没有mecached扩展 只有 mecache扩展 ...

不要在 windows 下跑 PHP 。。。。。

wangyouworld 发表于 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

wangyouworld 发表于 2017-9-9 16:15:25

一个想法,不知道是否可行?

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

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

可能会费点时间。
页: [1]
查看完整版本: session使用memcached的问题