欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

保存SESSION到Memcache的Driver类

程序员文章站 2023-12-23 20:19:57
...
保存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_',
//定义session为memcache
'SESSION_TYPE' => 'Memcache',
//Memcache服务器
'MEMCACHE_HOST' => '127.0.0.1',
//Memcache端口
'MEMCACHE_PORT' => 11211,
//Memcache的session信息有效时间
//'SESSION_EXPIRE' => 10,
二.写类,如下,在ThinkPHP/Extend/Driver/Session/SessionMemcache.class.php下 // +----------------------------------------------------------------------
// |
// +----------------------------------------------------------------------
// | Copyright (c) 2013-
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: richievoe
// +----------------------------------------------------------------------
/**
* 自定义Memcache来保存session
*/
Class SessionMemcache{

//memcache对象
private $mem;

//SESSION有效时间
private $expire;

//外部调用的函数
public function execute(){
session_set_save_handler(
array(&$this,'open'),
array(&$this,'close'),
array(&$this,'read'),
array(&$this,'write'),
array(&$this,'destroy'),
array(&$this,'gc')
);
}

//连接memcached和初始化一些数据
public function open($path,$name){
$this->expire = C('SESSION_EXPIRE') ? C('SESSION_EXPIRE') :ini_get('session.gc_maxlifetime');
$this->mem = new Memcache;
return $this->mem->connect(C('MEMCACHE_HOST'), C('MEMCACHE_PORT'));
}

//关闭memcache服务器
public function close(){
return $this->mem->close();
}

//读取数据
public function read($id){
$id = C('SESSION_PREFIX').$id;
$data = $this->mem->get($id);
return $data ? $data :'';
}

//存入数据
public function write($id,$data){
$id = C('SESSION_PREFIX').$id;
//$data = addslashes($data);
return $this->mem->set($id,$data,0,$this->expire);
}

//销毁数据
public function destroy($id){
$id = C('SESSION_PREFIX').$id;
return $this->mem->delete($id);
}

//垃圾销毁
public function gc(){
return true;
}
}
?>

保存SESSION到Memcache的Driver类 SessionMemcache.class.zip ( 902 B 下载:182 次 )

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

上一篇:

下一篇: