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);
  • 相关阅读:
    MySQL集群搭建(4)-MMM+LVS+Keepalived
    MySQL集群搭建(3)-MMM高可用架构
    MySQL集群搭建(2)-主主从模式
    MySQL集群搭建(1)-主备搭建
    MySQL 安装(二进制版)
    Nginx缓存了DNS解析造成后端不通--代理
    开启tcp_timestamps和tcp_tw_recycle造成NAT转发连接不上
    tcp_tw_recycle参数引发的故障
    记一次TIME_WAIT网络故障
    TCP服务端收到syn但是不回复syn ack问题分析
  • 原文地址:https://www.cnblogs.com/gide/p/4440280.html
Copyright © 2011-2022 走看看