程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 將Session寫入Memcache,sessionmemcache

將Session寫入Memcache,sessionmemcache

編輯:關於PHP編程

將Session寫入Memcache,sessionmemcache


通過session_set_save_handler()方法自定義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);

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved