zoukankan      html  css  js  c++  java
  • session写入memcache

     1 <?php    
     2     class MemSession{
     3         private static $handler = null;
     4         private static $lifetime = null;
     5         private static $time = null;
     6         const MS = 'session';
     7         
     8         private static function init($handler){
     9             self::$handler = $handler;
    10             self::$lifetime = ini_get('session.gc_maxlifetime');
    11             self::$time = time();
    12         }
    13         
    14         public static function start($memcache){
    15             self::init($memcache);
    16             //调用类中的方法要用数组,__CLASS__代表本类
    17             session_set_save_handler(
    18                 array(__CLASS__,'open'),
    19                 array(__CLASS__,'close'),
    20                 array(__CLASS__,'read'),
    21                 array(__CLASS__,'write'),
    22                 array(__CLASS__,'destroy'),
    23                 array(__CLASS__,'gc')
    24             );
    25             session_start();
    26         }
    27         
    28         public static function open($path,$name){
    29             
    30         }
    31         public static function close(){
    32             
    33         }
    34         
    35         public static function read($PHPSESSID){
    36             $val = self::$handler->get(self::session_key($PHPSESSID));
    37             
    38             if($val===false || $val==null){
    39                 return false;
    40             }
    41             return $val;
    42         }
    43         public static function write($PHPSESSID,$data){
    44             $method = $data? 'set':'replace';
    45             return self::$handler->$method(self::session_key($PHPSESSID),$data,MEMCACHE_COMPRESSED,self::$lifetime);
    46         }
    47         
    48         public static function destroy($PHPSESSID){
    49             return self::$handle->delete(self::session_key($PHPSESSID));
    50         }
    51         //memcache本身就有限定时间,数据自动销毁,所以可不使用gc方法
    52         public static function gc($lifetime){
    53             return true;
    54         }
    55         
    56         //给sessionID加前缀,避免key重复
    57         private static function session_key($PHPSESSID){
    58             $session_key = self::MS.$PHPSESSID;
    59             return $session_key;
    60         }        
    61     }
    62     $mem = new Memcache;
    63     $mem->connect("localhost",11211) or die("could not connect");
    64     MemSession::start($mem);
  • 相关阅读:
    其他技术----mongoDB基础
    redis学习----Redis入门
    网络通信学习----HTTP请求方法
    spring boot 学习 ---- spring boot admin
    java拓展----(转)synchronized与Lock的区别
    spring boot 学习 ---- spring MVC
    解决ubuntu的apt-get命令被占用
    阴暗
    图像分割实战-视频背景替换
    「知乎」你们觉得响应式好呢,还是手机和PC端分开来写?
  • 原文地址:https://www.cnblogs.com/yulei126/p/6786092.html
Copyright © 2011-2022 走看看