PHP 自定义session储存 MEMCACHE 方式类   高洛峰 细说PHP
更新:HHH   时间:2023-1-7


自定义session储存 MEMCACHE 方式类

在php.ini配置文件中更改设置 (Registered_save_handlers 有三种方式 files user memcache)

session.save_handler = user 表示用户自定义session类

<?php 
/*
 * 自定义session储存memcache方式的类
 * 
 */
 class MemSession{    
      public  static  $mem;                     //pdo的对象
      public  static $maxlifetime;         //最大生存时间

      
      public static function start(Memcache $mem){//限制变量是Memcache类
            self::$mem               =   $mem;
            self::$maxlifetime =    ini_get('session.gc_maxlifetime'); 
                     
          //注册自定义函数
          session_set_save_handler(
              array(__CLASS__,'open'), 
               array(__CLASS__,'close'),
               array(__CLASS__,'read'),
               array(__CLASS__,'write'),
               array(__CLASS__,'destroy'),
               array(__CLASS__, 'gc'));
          //开启会话
          session_start();
      }
      
        //开始 sesssion_start()
        public static function  open($path,$name){
            echo 'open<br/>';
            return true;
        }
        //关闭
        public static function close(){
            echo 'close<br/>';
           return true;
        }
        //读取 echo 
        public static function read($sid){
            echo 'read<br/>';  
            $data = self::$mem->get($sid);
            if(empty($data)){
                return ' ';
            }
            return $data;
            }
        //写入 $_SESSION['username']='yang'
        public static function write($sid,$data){
            echo 'write<br/>';
            self::$mem->set($sid, $data,MEMCACHE_COMPRESSED,self::$maxlifetime);// 如果设置为0表明该元素永不过期
        }
        //销毁 session_destroy
        public static function destroy($sid){
            echo 'destroy<br/>';     
            self::$mem->delete($sid,0);//0 表示立即删除 0秒
        }
        //回收垃圾
        public static function gc($maxlifetime){
            echo 'gc<br/>';            
            return true;
 }
 }

 //创建对象
 $mem = new Memcache();
 //添加两台memcache服务器
 $mem->addserver('localhost',11211);
 $mem->addserver('192.168.10.254',11211);
 //开始
 MemSession::start($mem);


返回web开发教程...