Heim  >  Artikel  >  Backend-Entwicklung  >  PHP schreibt den Dateityp „Session“ in den Memcache

PHP schreibt den Dateityp „Session“ in den Memcache

WBOY
WBOYOriginal
2016-08-08 09:26:08916Durchsuche
<?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);

Das Obige stellt vor, wie PHP Dateitypsitzungen in Memcache schreibt, einschließlich der relevanten Aspekte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn