用数据库来同步Session会加大数据库的负担,因为数据库本来就是容易产生瓶颈的地方,但如果采用MemCache来处理Session是非常合适的,因为MemCache的缓存机制和Session非常相似。另外,MemCach可以做分布式,能够把Web服务器中的内存组合起来,成为一个”内存池”,不管是哪个服务器产生的Session,都可以放到这个“内存池”中,其他的Web服务器都可以使用。以这种方式来同步Session,不会加大数据库的负担,并且安全性也要比使用Cookie高。把session放到内存里面,读取也要比其他处理方式快很多
<?php
class MemSession {
public static $mem; //pdo的对象
public static $maxlifetime; //最大的生存时间
public static function start(Memcache $mem) {
self::$mem = $mem;
self::$maxlifetime = ini_get("session.gc_maxlifetime");
//注册过程, 让PHP自己处理session时,按照这个函数指定的几个周期来完成
session_set_save_handler(
array(__CLASS__, "open"),
array(__CLASS__,"close"),
array(__CLASS__, "read"),
array(__CLASS__, "write"),
array(__CLASS__, "destroy"),
array(__CLASS__,"gc"));
session_start(); //开启会话
}
// 开启时,session_start()
public static function open($path, $name) {
return true;
}
//关闭
public static function close() {
return true;
}
//读取 echo $_SESSION['username']
public static function read($sid) {
$data =