session存入memcache中



其实主要玩的是session_set_save_handler这个内置函数,只要把这个函数搞明白的,那就没问题听

<?php
class MS{
    static $mem;
    static $maxtime;
 
    function __construct($mem){
        self::$mem = $mem;
        self::$maxtime = ini_get('session.gc_maxlifetime');
        session_module_name('user');//session文件保存方式,这个是必须的!除非在Php.ini文件中设置了
 
        session_set_save_handler(
            array(__CLASS__,'open'),//在运行session_start()时执行
            array(__CLASS__,'close'),//在脚本执行完成或调用session_write_close() 或 session_destroy()时被执行,即在所有session操作完后被执行
            array(__CLASS__,'read'),//在运行session_start()时执行,因为在session_start时,会去read当前session数据
            array(__CLASS__,'write'),//此方法在脚本结束和使用session_write_close()强制提交SESSION数据时执行
            array(__CLASS__,'destroy'),//在运行session_destroy()时执行
            array(__CLASS__,'gc')//执行概率由session.gc_probability 和 session.gc_divisor的值决定,时机是在open,read之后,session_start会相继执行open,read和gc
        );
        session_start();//这也是必须的,打开session,必须在session_set_save_handler后面执行
    }
 
    static function open($sid){
        return true;
    }
    static function close(){
        return true;
    }
 
    static function read($sid){
        return self::$mem->get($sid);
    }
 
   static function write($sid,$data){
        return self::$mem->set($sid,$data,MEMCACHE_COMPRESSED,self::$maxtime);
    }
 
   static function destroy($sid){
        return self::$mem->delete($sid);
    }
 
   static function gc($maxtime){
        return true;
    }
}
$mem=new Memcache();
$mem->connect('127.0.0.1', '11211');
$session=new MS($mem);
$_SESSION['007']='http://xuemingjing.sinaapp.com';


这里咱们用的是new memcache 还有一个new memcached这个更好一些,一般在大型项目中都用这个,大家可以下去研究一下。在这里我就不多说了!




评论



分享

最新加入

最新评论

bestphper: 就是就是 查看原文 01月12日 14:32
╰ゝ牵手丶永恒: 不错学习一下,只有不断的共享祖国才会更强大!哈哈 查看原文 01月08日 17:06





作者:Stubborn 京ICP备18062026号-1