<?php
class SessionManager{
/*
ini_set("session.save_handler","redis");
ini_set('session.cookie_domain','xxx.com');
ini_set("session.save_path","tcp://192.168.1.3:6379");
*/
private $redis;
private $sessionSavePath;
private $sessionName;
private $sessionExpireTime=60*5;//redis,session的过期时间5分钟
private $perfix='red_';
public function __construct(){
$this->redis = new Redis();//创建phpredis实例
$this->redis->connect('127.0.0.1',6379);//连接redis
//$this->redis->auth("107lab");//授权
$retval = session_set_save_handler(
array($this,"open"),
array($this,"close"),
array($this,"read"),
array($this,"write"),
array($this,"destroy"),
array($this,"gc")
);
// 下面这行代码可以防止使用对象作为会话保存管理器时可能引发的非预期行为,表示当脚本执行之后或调用exit()之后,存储当前会话数据并关闭当前会话
//register_shutdown_function('session_write_close');
session_start();
}
public function open($path,$name){
return true;
}
public function close(){
return true;
}
public function read($id){
$value = $this->redis->get($this->perfix.$id);//获取redis中的指定记录
if($value){
return $value;
}else{
return '';
}
}
public function write($id,$data){
if($this->redis->set($this->perfix.$id,$data)){//以session ID为键,存储
$this->redis->expire($this->perfix.$id,$this->sessionExpireTime);//设置redis中数据的过期时间,即session的过期时间
return true;
}
return false;
}
public function destroy($id){
if($this->redis->exists($this->perfix.$id)) {
return $this->redis->del($this->prefix.$id) > 0 ? true : false;
}
return true;
}
public function gc($maxlifetime){
return true;
}
public function __destruct(){
session_write_close();
}
}
/*
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
Redissession::start($redis);
*/
new SessionManager();
php的session redis
最新推荐文章于 2023-08-13 17:27:41 发布