将Session数据自动存储在Memcache缓存器中
我们需要定义一个类,用于自动加载调用memcache缓存器同时将设置的session所有值存储在memcac缓存器中,并且session销毁的时候也会自动清除memcache缓存。
安装memcache缓存服务器
主要使用session_set_save_handler()函数
class MemcacheUser{ //定义属性,用于存储memcache系统对象 public static $obj; //定义属性,用于存储获取在php.ini配置文件中的session最大生命周期值 public static $MaxSessionTime; //初始化类方法 public static function init($mem){ self::$obj=$mem; self::$MaxSessionTime=init_get('session.gc_maxlifetime'); //获取php.ini中的session属性值,默认1440秒 } //定义启动类方法 public static function start($mem){ self::init($mem); session_set_save_handler( //这个函数有6个参数,都是回调函数,且需要自己定义函数 array(__CLASS__,'open'), array(__CLASS__,'close'), array(__CLASS__,'read'), array(__CLASS__,'write'), array(__CLASS__,'destroy'), array(__CLASS__,'gc') ); } //准备自定义回调函数 //定义参数1的回调函数open:当session_start()开启的时候自动调用 public static function open($session_path,$session_name){ return true; } //定义参数2的回调函数close:当关闭session时自动调用 public static function close(){ return true; } //定义参数3的回调函数read:当memcache中读session数据时自动调用 public static function read($id){ $data=self::$obj->get($id); return $data; } //定义参数4的回调函数write:当session中信号写入memcache中自动调用 public static function write($id,$data){ self::$obj->add($id,$data,MEMCACHE_COMPRESSED,self::$MaxSessionTime); return true; } //定义参数5的回调函数destroy:当session销毁时候自动调用 public static function destroy($id){ self::$obj->delete($id); } //定义参数6的回调函数gc:自动回收垃圾 public static function gc(){ return true; } } //获取系统memcache对象 $memcache=new Memcache(); $memcache->connect('127.0.0.1',11211); //将对象传到类并自动调用 MemcacheUser::start($memcache);
使用注意事项:
引入类文件必须在session_start()的上边引入!!
评论