session数据保存到memcache中

来源:互联网 发布:免费动态域名解析软件 编辑:程序博客网 时间:2024/05/16 04:40

/** * session数据保存到memcache中 * 使用session_set_save_handler 函数 * php.ini 设置 * 默认为session.save_handler = files,必须将其修改为session.save_handler = user,即变为用户自定义方式。 */class SessionMemcache {private static $handler=null;private static $lifetime=null;private static $time=null;const NS='session_';    private static function init($handler){self::$handler=$handler;self::$lifetime=ini_get('session.gc_maxlifetime');self::$time=time();}public static function start(Memcache $memcache){self::init($memcache);session_set_save_handler(array(__CLASS__, "open"),array(__CLASS__, "close"),array(__CLASS__, "read"),array(__CLASS__, "write"),array(__CLASS__, "destroy"),array(__CLASS__, "gc")         );session_start();}public static function open($path, $name){return true;}public static function close() {return true;}public static function read($id){$out=self::$handler->get(self::session_key($id));if($out===false || $out == null)return '';return $out;}public static function write($id, $data){$method=$data ? 'set' :'replace';return self::$handler->$method(self::session_key($id),$data, MEMCACHE_COMPRESSED, self::$lifetime);}public static function destroy($id){return self::$handler->delete(self::session_key($id));}public static function gc($lifetime){return true;}private static function session_key($id){$session_key=self::NS.$id;return $session_key;}}  $memcache=new Memcache();    $memcache->connect("localhost", 11211)or die("不能连接memcache");    SessionMemcache::start($memcache);  


调用文件1  memcache1.php

include 'SessionMemcache.class.php';$_SESSION["islogin3"] = 1;$_SESSION["username"] = "admin";$_SESSION["uid"] = 333;echo session_name().'='.session_id()."<br>";echo time();


调用文件2  memcache2.php

include 'SessionMemcache.class.php';print_r($_SESSION);echo "<br>";echo session_name().'='.session_id()."<br>";echo time();


调用文件3  memcache3.php

include 'SessionMemcache.class.php';$_SESSION = array();if (isset($_COOKIE[session_name()])){setcookie(session_name(), '' , time()-100, '/');}session_destroy();echo session_name().'='.session_id()."<br>";









  
0 0
原创粉丝点击