Maison  >  Article  >  php教程  >  保存SESSION到Memcache的Driver类

保存SESSION到Memcache的Driver类

WBOY
WBOYoriginal
2016-06-07 11:43:381162parcourir

保存SESSION到Memcache的Driver类:SessionMemcache.class.php,具体路径在:ThinkPHP/Extend/Driver/Session/SessionMemcache.class.php.模仿SessionDb.class.php来实现保存SESSION数据到Memcache中。
一.配置环境
1、Memcached安装(自己上网找教程安装)
2、php.ini的配置:下载php_memcache.dll(如果环境没有,下载好放在php系统文件夹的ext下面),在php.ini中配置加入extension=php_memcache.dll,然后访问phpinfo()页面看是否已开启Memcached成功。如图:
保存SESSION到Memcache的Driver类
在ThinkPHP项目的配置文件conf/config.php中配置:         // 'SESSION_PREFIX' => 'sess_',<br>     //定义session为memcache<br>     'SESSION_TYPE' => 'Memcache',<br>     //Memcache服务器<br>     'MEMCACHE_HOST' => '127.0.0.1',<br>     //Memcache端口<br>     'MEMCACHE_PORT' => 11211,<br>     //Memcache的session信息有效时间<br>     //'SESSION_EXPIRE' => 10,二.写类,如下,在ThinkPHP/Extend/Driver/Session/SessionMemcache.class.php下<?php <br /> // +----------------------------------------------------------------------<br> // | <br> // +----------------------------------------------------------------------<br> // | Copyright (c) 2013- <br> // +----------------------------------------------------------------------<br> // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )<br> // +----------------------------------------------------------------------<br> // | Author: richievoe <richievoe><br> // +----------------------------------------------------------------------<br>     /**<br>      * 自定义Memcache来保存session<br>      */<br> Class SessionMemcache{<br> <br>     //memcache对象<br>     private $mem;<br> <br>     //SESSION有效时间<br>     private $expire;<br> <br>     //外部调用的函数<br>     public function execute(){<br>         session_set_save_handler(<br>             array(&$this,'open'), <br>             array(&$this,'close'), <br>             array(&$this,'read'), <br>             array(&$this,'write'), <br>             array(&$this,'destroy'), <br>             array(&$this,'gc')<br>             );<br>     }<br> <br>     //连接memcached和初始化一些数据<br>     public function open($path,$name){<br>         $this->expire = C('SESSION_EXPIRE') ? C('SESSION_EXPIRE') :ini_get('session.gc_maxlifetime');<br>         $this->mem = new Memcache;<br>         return $this->mem->connect(C('MEMCACHE_HOST'), C('MEMCACHE_PORT'));<br>     }<br> <br>     //关闭memcache服务器<br>     public function close(){<br>         return $this->mem->close();<br>     }<br> <br>     //读取数据<br>     public function read($id){<br>         $id = C('SESSION_PREFIX').$id;<br>         $data = $this->mem->get($id);<br>         return $data ? $data :'';<br>     }<br> <br>     //存入数据<br>     public function write($id,$data){<br>         $id = C('SESSION_PREFIX').$id;<br>         //$data = addslashes($data);<br>         return $this->mem->set($id,$data,0,$this->expire);<br>     }<br> <br>     //销毁数据<br>     public function destroy($id){<br>         $id = C('SESSION_PREFIX').$id;<br>         return $this->mem->delete($id);<br>     }<br> <br>     //垃圾销毁<br>     public function gc(){<br>         return true;<br>     }<br> }<br>  ?></richievoe>

附件 SessionMemcache.class.zip ( 902 B 下载:182 次 )

AD:真正免费,域名+虚机+企业邮箱=0元

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn