>백엔드 개발 >PHP 튜토리얼 >PHP는 memcache에 파일 형식 세션을 씁니다.

PHP는 memcache에 파일 형식 세션을 씁니다.

WBOY
WBOY원래의
2016-08-08 09:26:08929검색
<?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가 memcache에 파일 형식 세션을 작성하는 방법과 관련 측면을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.