首页 后端开发 php教程 php之session最优将信息写下memcache中管理

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

Jun 13, 2016 pm 12:16 PM
handler memcache session static

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

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

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

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

memcache 指令用telnet操作



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


其中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=&#39;session_&#39;;  //定义下标     ...    	&#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,数据,和生命时长

    	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成功















本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

session失效怎么解决 session失效怎么解决 Oct 18, 2023 pm 05:19 PM

session失效通常是由于 session 的生存时间过期或者服务器关闭导致的。其解决办法:1、延长session的生存时间;2、使用持久化存储;3、使用cookie;4、异步更新session;5、使用会话管理中间件。

PHP Session 跨域问题的解决方法 PHP Session 跨域问题的解决方法 Oct 12, 2023 pm 03:00 PM

PHPSession跨域问题的解决方法在前后端分离的开发中,跨域请求已成为常态。在处理跨域问题时,我们通常会涉及到session的使用和管理。然而,由于浏览器的同源策略限制,跨域情况下默认情况下无法共享session。为了解决这个问题,我们需要采用一些技巧和方法来实现session的跨域共享。一、使用cookie跨域共享session最常

如何使用PHP开发中的Memcache? 如何使用PHP开发中的Memcache? Nov 07, 2023 pm 12:49 PM

在Web开发中,我们经常需要使用缓存技术来提高网站的性能和响应速度。Memcache是一种流行的缓存技术,它可以缓存任何数据类型、支持高并发和高可用性。本文将介绍如何使用PHP开发中的Memcache,并提供具体代码示例。一、安装Memcache要使用Memcache,我们首先需要在服务器上安装Memcache扩展。在CentOS操作系统中,可以使用以下命令

JavaScript和PHP的cookie之间有哪些区别? JavaScript和PHP的cookie之间有哪些区别? Sep 02, 2023 pm 12:29 PM

JavaScriptCookie使用JavaScriptcookie是记住和跟踪偏好、购买、佣金和其他信息的最有效方法。更好的访问者体验或网站统计所需的信息。PHPCookieCookie是存储在客户端计算机上的文本文件并保留它们用于跟踪目的。PHP透明地支持HTTPcookie。JavaScriptcookie如何工作?您的服务器将一些数据发送到访问者的浏览器cookie的形式。浏览器可以接受cookie。如果存在,它将作为纯文本记录存储在访问者的硬盘上。现在,当访问者到达站点上的另一个页面时

PHP Session 跨域与AJAX的异步通信优化 PHP Session 跨域与AJAX的异步通信优化 Oct 12, 2023 am 09:22 AM

PHPSession跨域与AJAX的异步通信优化随着互联网的发展,跨域访问和异步通信已成为现代web应用开发中的常见需求。本文将重点介绍如何使用PHPSession实现跨域访问,并提供一些优化的方法来改善AJAX的异步通信效率。一、跨域访问的问题在Web开发中,当浏览器从一个域名的网页上发起一个HTTP请求,然后返回的响应数据属于另一个域名时,就会发生

PHP开发中如何使用Memcache进行高效的数据读写操作? PHP开发中如何使用Memcache进行高效的数据读写操作? Nov 07, 2023 pm 03:48 PM

在PHP开发中,使用Memcache缓存系统可以大大提高数据读写的效率。Memcache是一种基于内存的缓存系统,它可以将数据缓存在内存中,避免频繁的读写数据库。本文将介绍如何在PHP中使用Memcache进行高效的数据读写操作,并提供具体的代码示例。一、安装和配置Memcache首先,需要在服务器上安装Memcache扩展。可以通过

session失效的原因有哪些 session失效的原因有哪些 Oct 17, 2023 pm 05:01 PM

session失效的原因有会话超时、会话数量限制、会话完整性检查、服务器重启、浏览器或设备问题等等。详细介绍:1、会话超时:服务器为Session设置了一个默认的超时时间,当用户在一段时间内没有与服务器交互时,Session将自动失效;2、会话数量限制:服务器为每个用户的Session数量设置了一个限制,当用户创建的Session数量超过这个限制时,最新的会覆盖最早的等等。

PHP开发中如何使用Memcache进行高效的数据写入和查询? PHP开发中如何使用Memcache进行高效的数据写入和查询? Nov 07, 2023 pm 01:36 PM

PHP开发中如何使用Memcache进行高效的数据写入和查询?随着互联网应用的不断发展,对于系统性能的要求越来越高。在PHP开发中,为了提高系统的性能和响应速度,我们经常会使用各种缓存技术。而其中一个常用的缓存技术就是Memcache。Memcache是一种高性能的分布式内存对象缓存系统,可以用来缓存数据库查询结果、页面片段、会话数据等。通过将数据存储在内存

See all articles