码迷,mamicode.com
首页 > Web开发 > 详细

php会话(session)实现原理

时间:2017-12-07 17:18:36      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:问题:   save   cookies   add   数据   关系   time   host   tool   

先考虑如下问题:

  禁用了cookie,session能否使用?

  如何把session存储数据库/memcached/redis

  如何实现一个严格的30分钟过期的会话?、

  如何实践web服务器集群的会话共享?

  如何实现两个不同域站点的会话共享?

答: 能!

cookie和session的关系

cookie传递session_id,供服务器决定session文件.

所以只要能向服务器传递session_id,session就能正常使用.

而cookie只是传递session_id的一种方式而已.

用url也能传递session_id

php.ini 配置如下:

session.use_only_cookies = 0

session.use_trans_sid = 1

OK了.

 

实现代码:

 

class sess {
	    protected static $mem = null;

	    public static function open() {
	        if(self::$mem === null) {
	            self::$mem = new memcache();
	            self::$mem->connect(‘localhost‘ , 11211);
	        }
	    }

	    public static function close() {
	        self::$mem->close();
	    }

	    public static function read($id) {
	        return self::$mem->get($id);
	    }

	    public static function write($id , $data) {
	        return self::$mem->add($id,$data , false);
	    }

	    public static function destroy($id) {
	        return self::$mem->delete($id);
	    }

	    public static function gc($lifetime) {
	        // 
	    }
	}

	session_set_save_handler(‘sess::open‘, ‘sess::close‘, ‘sess::read‘, ‘sess::write‘, ‘sess::destroy‘, ‘sess::gc‘);

php会话(session)实现原理

标签:问题:   save   cookies   add   数据   关系   time   host   tool   

原文地址:http://www.cnblogs.com/lauhp/p/7999496.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!