Sian 发表于 2016-1-26 16:00:01

自定义Session的memcache实现

数据库实现参考:www.yusian.com/thread-11084-1-1.html

<?php
        class SASession{
                private static $mem;
                public static function start(Memcache $mem){
                       
                        self::$mem = $mem;
                        // 设置session模式为用户模式,也可以在php.ini这个配置文件中修改
                        session_module_name("user");
                        // 注册过程
                        session_set_save_handler(
                                                                        array(__CLASS__, "open"),
                                                                        array(__CLASS__, "close"),
                                                                        array(__CLASS__, "read"),
                                                                        array(__CLASS__, "write"),
                                                                        array(__CLASS__, "destroy"),
                                                                        array(__CLASS__, "gc"));       
                                                                       
                        session_start();                                               
                }               
                // 开启
                public static function open(){
                        return true;
                }
                // 关闭
                public static function close(){
                        return true;
                }
                // 读
                public static function read($sid){
                        $data = self::$mem->get($sid);
                        if(empty($data)) return "";
                        return $data;
                }
                // 写
                public static function write($sid, $data){
                        $lifetime = ini_get("session.gc_maxlifetime");
                        self::$mem->set($sid, $data, MEMCACHE_COMPRESSED, $lifetime);
                }
                // 销毁
                public static function destroy($sid){
                        self::$mem->delete($sid, 0);
                }
                // 回收
                public static function gc($maxlifetime){
                        // memcache有自动回收机制
                        return true;
                }
        }

        $mem = new Memcache;
        $mem->addServer("localhost", 11211);
       
        SASession::start($mem);

页: [1]
查看完整版本: 自定义Session的memcache实现