TP下的session.memcache

本文介绍如何在ThinkPHP框架中使用Memcache作为Session存储方式。通过配置环境、修改配置文件及自定义SessionMemcache类,实现了高效地利用Memcache进行Session数据的存储与管理。

保存SESSION到Memcache的Driver类:SessionMemcache.class.php,具体路径在:ThinkPHP/Extend/Driver/Session/SessionMemcache.class.php.模仿SessionDb.class.php来实现保存SESSION数据到Memcache中。
一.配置环境
1、Memcached安装 http://www.2cto.com/os/201205/132641.html 

        http://up.2cto.com/2012/0522/20120522094758371.rar 
2、php.ini的配置:下载php_memcache.dll(如果环境没有,下载好放在php系统文件夹的ext下面),在php.ini中配置加入extension=php_memcache.dll,然后访问phpinfo()页面看是否已开启Memcached成功。 

如图:

在ThinkPHP项目的配置文件conf/config.php中配置:

  1.          // 'SESSION_PREFIX' => 'sess_',
  2.     //定义session为memcache
  3.     'SESSION_TYPE' => 'Memcache',
  4.     //Memcache服务器
  5.     'MEMCACHE_HOST' => '127.0.0.1',
  6.     //Memcache端口
  7.     'MEMCACHE_PORT' => 11211,
  8.     //Memcache的session信息有效时间
  9.     //'SESSION_EXPIRE' => 10,
复制代码
二.写类,如下,在ThinkPHP/Extend/Driver/Session/SessionMemcache.class.php下
  1. <?php 
  2. // +----------------------------------------------------------------------
  3. // | 
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2013- 
  6. // +----------------------------------------------------------------------
  7. // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
  8. // +----------------------------------------------------------------------
  9. // | Author: richievoe <richievoe@163.com>
  10. // +----------------------------------------------------------------------
  11.     /**
  12.      * 自定义Memcache来保存session
  13.      */
  14. Class SessionMemcache{
  15.     //memcache对象
  16.     private $mem;
  17.     //SESSION有效时间
  18.     private $expire;
  19.     //外部调用的函数
  20.     public function execute(){
  21.         session_set_save_handler(
  22.             array(&$this,'open'), 
  23.             array(&$this,'close'), 
  24.             array(&$this,'read'), 
  25.             array(&$this,'write'), 
  26.             array(&$this,'destroy'), 
  27.             array(&$this,'gc')
  28.             );
  29.     }
  30.     //连接memcached和初始化一些数据
  31.     public function open($path,$name){
  32.         $this->expire = C('SESSION_EXPIRE') ? C('SESSION_EXPIRE') :ini_get('session.gc_maxlifetime');
  33.         $this->mem = new Memcache;
  34.         return $this->mem->connect(C('MEMCACHE_HOST'), C('MEMCACHE_PORT'));
  35.     }
  36.     //关闭memcache服务器
  37.     public function close(){
  38.         return $this->mem->close();
  39.     }
  40.     //读取数据
  41.     public function read($id){
  42.         $id = C('SESSION_PREFIX').$id;
  43.         $data = $this->mem->get($id);
  44.         return $data ? $data :'';
  45.     }
  46.     //存入数据
  47.     public function write($id,$data){
  48.         $id = C('SESSION_PREFIX').$id;
  49.         //$data = addslashes($data);
  50.         return $this->mem->set($id,$data,0,$this->expire);
  51.     }
  52.     //销毁数据
  53.     public function destroy($id){
  54.         $id = C('SESSION_PREFIX').$id;
  55.         return $this->mem->delete($id);
  56.     }
  57.     //垃圾销毁
  58.     public function gc(){
  59.         return true;
  60.     }
  61. }
  62.  ?>


http://www.thinkphp.cn/code/361.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值