采用数据库方式:
class MySessionHandler implements SessionHandlerInterface
{
public $mysqli;
public $EXPIRE_TIME = 60; //过期时间
function open($save_path, $session_id)
{
$this->mysqli = new Mysqli("localhost","root","123456","mcools");
if ( mysqli_connect_errno ()) {
printf ( "Connect failed: %s\n" , mysqli_connect_error ());
exit();
}
return true;
}
function read($session_id)
{
$res = $this->mysqli->query("select svalue from sessions where skey = $session_id");
//$row = $res->fetch_assoc();
return $res;
}
function write($session_id, $session_data)
{
$expiry = time()+$this->EXPIRE_TIME;
$sql = "insert into sessions (svalue,skey,expiry)values('$session_data','$session_id',$expiry)";
$this->mysqli->query($sql);
return true;
}
//当session.gc_probability/session.gc_divisor == 1的时候会执行回收机制gc()
function gc($maxlifetime)
{
$sql = 'delete from sessions where expiry < '.time();
$this->mysqli->query($sql);
return true;
}
function close()
{
return true;
}
function destroy($session_id)
{
// TODO: Implement destroy() method.
$this->mysqli->query("delete from sessions where skey = $session_id");
return true;
}
}
$handler = new MySessionHandler();
session_set_save_handler($handler,true);
// 设置
ini_set('session.save_handler', 'user');
ini_set('session.gc_probability', '1');
ini_set('session.gc_divisor', '3');
session_start();
#完成上面的代码之后就可以进行正常的session操作,而数据是保存在数据库中的
//destory
// unset($_SESSION['name']);
// session_destroy();
var_dump($_SESSION);
//write
$_SESSION['name'] = 'jack';
//read
// echo $_SESSION['name'];