Heim  >  Artikel  >  php教程  >  保存SESSION到Memcache的Driver类

保存SESSION到Memcache的Driver类

WBOY
WBOYOriginal
2016-06-07 11:43:381141Durchsuche

保存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元

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn