php之session最优将信息写入memcache中管理_PHP教程

php中文网
发布: 2016-07-13 10:01:59
原创
1108人浏览过

php之session最优将信息写入memcache中管理

前面也讲到了用memcache存储数据信息缓存的方法和好处,这样能够减少访问数据库的次数,减少访问量大时对数据库的压力

将session存储到memcache中管理需要了解memcache、session的使用和session_set_save_handler()

同样先编写一个公用的类,当然采用静态的成员方法

memcache 指令用telnet操作

\

立即学习PHP免费学习笔记(深入)”;

 

同样现在根目录下建立需要用到的文件

\

其中memsession.class.php 是公用的memcache存储类文件,one.php、two.php和three.php是测试文件,items.php 是输出数据数组的

session.class.php中:

首先定义连接memcache用到的变量并初始化

 

<!--?php

    class MemSession{

    	private static $handler=null;
    	private static $lifetime=null;
    	private static $time=null;
    	const NS='session_';  //定义下标
     ...
    	&#160;...
}

&#160; &#160; $memcache=new Memcache;
&#160; &#160; //连接memcache
&#160; &#160; $memcache--->connect("localhost",11211) or die("could not connect");
    MemSession::start($memcache);
登录后复制


 

 

注意的是 NS 为常量,定义下标

 

再初始化方法

 

    	//初始化方法
    	private static function init($handler){
    		self::$handler=$handler;
    		self::$lifetime=ini_get('session.gc_maxlifetime');
    		self::$time=time();
    	}
登录后复制


 

开启session,并定义调用本类中的open、close等方法

 

    	//开启session
    	public static function start(Memcache $memcache){
    		//首先将属性初始化
    		self::init($memcache);  //调用handler,以后调用handler时都是用memcache
    		session_set_save_handler(
    			array(__CLASS__,'open'),//调用本类的open方法
    			array(__CLASS__,'close'),
    			array(__CLASS__,'read'),
    			array(__CLASS__,'write'),
    			array(__CLASS__,'destroy'),
    			array(__CLASS__,'gc')
    			);

    		//调用session_start()
    		session_start();
    	}
登录后复制

接下来就是定义上面调用的这些方法

 

open() 和 close() 只要返回真就可以,但 open() 的参数为 路径(path) 和 名称(name)

 

    	public static function open($path, $name){
    		return true;
    	}
    	public static function close(){
    		return true;
    	}
登录后复制

read() 只需要有PHPSESSID参数即可

 

但要判断传入的out 参数是否有值,有值就返回out的数据

 

    	public static function read($PHPSESSID){
    		$out=self::$handler->get(self::session_key($PHPSESSID));  //得到该下标输出的数据
    		if($out===false || $out ==null){
    			return '';  //out得到数据没有,返回空
    		}
    		return $out;  //返回得到的数据
    	}
登录后复制

write() :

 

返回自身的id,数据,和生命时长

微信 WeLM
微信 WeLM

WeLM不是一个直接的对话机器人,而是一个补全用户输入信息的生成模型。

微信 WeLM 33
查看详情 微信 WeLM

 

    	public static function write($PHPSESSID, $data){
    		//判断是否有数据
    		$method=$data ? 'set' : 'relpace';
    		return self::$handler->$method(self::session_key($PHPSESSID), $data, MEMCACHE_COMPRESSED, self::$lifetime);

    	}
登录后复制

 

 

destroy() 和 gc() :

destroy()调用自身的delete方法

 

    	public static function destroy($PHPSESSID){
    		return self::$handler->delete(self::session_key($PHPSESSID));  //调用delete方法

    	}
    	public static function gc($lifetime){
    			return true;
    	}
登录后复制

接下来需要定义一个传入PHPSESSID的方法

 

 

    	private static function session_key($PHPSESSID){
    		$session_key=self::NS.$PHPSESSID; //键值为自身和传进来的phpsessid

    		return $session_key;
    	}
登录后复制

 

 

 

结果显示

如果成功,在telnet中显示

\

 

\

 

表示session数据信息储存到memcache成功

 


 

 

 

 

 

 

 

 

 

 

 

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/971083.htmlTechArticlephp之session最优将信息写入memcache中管理 前面也讲到了用memcache存储数据信息缓存的方法和好处,这样能够减少访问数据库的次数,减少访问...
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号