php 把 session存到memcache中
作者:巩文   发布时间:2015年01月07日  热度:1820℃   评论: 我要评论
<?php
    class MemSession {
        private static $handler=null;
        private static $lifetime=null;
        /**
         * 初使化和开启session
         * @param    Memcache    $memcache    memcache对象
         */
        public static function start(Memcache $memcache){
             //将 session.save_handler 设置为 user,而不是默认的 files
             //session文件保存方式,这个是必须的!除非在Php.ini文件中设置了
            ini_set('session.save_handler', 'user'); //等价于 session_module_name('user');
            self::$handler=$memcache;
            self::$lifetime=ini_get('session.gc_maxlifetime');
            session_set_save_handler(
                    array(__CLASS__, 'open'),
                    array(__CLASS__, 'close'),
                    array(__CLASS__, 'read'),
                    array(__CLASS__, 'write'),
                    array(__CLASS__, 'destroy'),
                    array(__CLASS__, 'gc')
                );
            session_start();
            return true;
        }public static function open($path, $name){
            return true;
        }
        public static function close(){
            return true;
        }
        /**
         * 从SESSION中读取数据
         * @param    string    $PHPSESSID    session的ID
         * @return     mixed            返回session中对应的数据
         */
        public static function read($PHPSESSID){
            $out=self::$handler->get(self::session_key($PHPSESSID));
            if($out===false || $out == null)
                return '';
            return $out;
        }
        /**
         *向session中添加数据
         */
        public static function write($PHPSESSID, $data){
            $method=$data ? 'set' : 'replace';
            return self::$handler->$method(self::session_key($PHPSESSID), $data, MEMCACHE_COMPRESSED, self::$lifetime);
        }
        public static function destroy($PHPSESSID){
            return self::$handler->delete(self::session_key($PHPSESSID));
        }
        public static function gc($lifetime){
            //无需额外回收,memcache有自己的过期回收机制
            return true;
        }
        private static function session_key($PHPSESSID){
            $session_key=TABPREFIX.$PHPSESSID;
            return $session_key;
        }    
    }
    //使用
    $mem=new Memcache();
    $mem->connect('127.0.0.1', '11211');
    MemSession::start($mem);
    $_SESSION['myBlog']='http://bestphper.cn';
评论 ( 0条 )
昵称: 必填     邮箱: 选填,承诺不会泄漏您的邮箱!
小兔表情
QQ表情
评论
PHP
超级文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言风格有类似于C语言,被广泛的运用。