首页  >  文章  >  后端开发  >  php将文件类型session写入memcache

php将文件类型session写入memcache

WBOY
WBOY原创
2016-08-08 09:26:08916浏览
<?php class MemSession{
        private static $handler = null;
        private static $lifetime = null;
        private static $time = null;
        const MS = &#39;session&#39;;
        
        private static function init($handler){
            self::$handler = $handler;
            self::$lifetime = ini_get(&#39;session.gc_maxlifetime&#39;);
            self::$time = time();
        }
        
        public static function start($memcache){
            self::init($memcache);
            //调用类中的方法要用数组,__CLASS__代表本类
            session_set_save_handler(
                array(__CLASS__,&#39;open&#39;),
                array(__CLASS__,&#39;close&#39;),
                array(__CLASS__,&#39;read&#39;),
                array(__CLASS__,&#39;write&#39;),
                array(__CLASS__,&#39;destroy&#39;),
                array(__CLASS__,&#39;gc&#39;)
            );
            session_start();
        }
        
        public static function open($path,$name){
            
        }
        public static function close(){
            
        }
        
        public static function read($PHPSESSID){
            $val = self::$handler->get(self::session_key($PHPSESSID));
            
            if($val===false || $val==null){
                return false;
            }
            return $val;
        }
        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::$handle->delete(self::session_key($PHPSESSID));
        }
        //memcache本身就有限定时间,数据自动销毁,所以可不使用gc方法
        public static function gc($lifetime){
            return true;
        }
        
        //给sessionID加前缀,避免key重复
        private static function session_key($PHPSESSID){
            $session_key = self::MS.$PHPSESSID;
            return $session_key;
        }        
    }
    $mem = new Memcache;
    $mem->connect("localhost",11211) or die("could not connect");
    MemSession::start($mem);

以上就介绍了php将文件类型session写入memcache,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn