代码如下:
<?php
/*
* session入数据库
*/
class SessionDB{
protected $db; //保存mysql类的对象,因为我在mysqldb类中封装了一些方法。。。
protected $table;
/*
* 将session的处理设置为用户级别
* 然后使用用户自定义
*这几个方法是有顺序的
*/
public function __construct(){
ini_set('session.save_handler','user');
session_set_save_handler(
array($this,'open'),
array($this,'close'),
array($this,'read'),
array($this,'write'),
array($this,'destroy'),
array($this,'gc')
);
session_start();
}
public function open(){
$this->db = Mysql::getinstance($GLOBALS['config']['db']); ///初始化数据库,根据自己实际情况。。。
$this->table =
}
public function close(){
return true;
}
public function read($session_id){
$sql = "select session_data from {$this->table} where session_id ='$session_id' ";
if($row = $this->db->fetchRow($sql)){
return $row['session_data'];
}else{
return '';
}
}
public function write($session_id,$session_data){
$time = time();
$sql = "insert into $this->table values('$session_id','$session_data',$time) on duplicate key update session_data='$session_data' ";
$this->db->query($sql);
}
public function destroy($session_id){
$sql = "delete from {$this->table} where session_id = '$session_id' ";
$this->db->query($sql);
}
public function gc($max_life){
$time = time();
$lefttime = $time - $max_life;
$sql = "delete from {$this->table} where timestamp < $lefttime";
$this->db->query($sql);
}
}