使用复述,保存用户会话会话的案例分析

  介绍

这篇文章将为大家详细讲解有关使用复述,保存用户会话会话的案例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

<强>前言

PHP内置的绘画存储机制是把全部的会话数据保存在服务器上的文本文件里面,这些文件通常都是保存在服务器上的临时目录里。如果并发量大,读写效率非常低。而复述,对高并发的支持非常好,所以,可以使用复述,替代文件存储会话。

下载源码

<强> session_set_save_handler函数

PHP的session_set_save_handler函数用来定义用户级会话保存函数(如打开、关闭,写入等)。原型如下:

bool session_set_save_hanler(回调,回调,回调,回调,回调毁坏,回调gc)

参数描述开放当会话打开时调用此函数。接收两个参数,第一个参数是保持会话的路径,第二个参数是会话的名字。此回调函数操作成功返回真,反之返回FALSE.close当会话操作完成时调用此函数。不接收参数。此回调函数操作成功返回真,反之返回FALSE.read以会话ID作为参数。通过会话ID从数据存储方中取得数据,并返回此数据。如果数据为空,可以返回一个空字符串。此函数在调用session_start 前被触发写当数据存储时调用。有两个参数,一个是会话ID,另外一个是会话的数据摧毁当调用session_destroy 函数时触发摧毁函数。只有一个参数会话ID,此回调函数操作成功返回真,反之返回FALSE.gc当PHP执行会话垃圾回收机制时触发,此回调函数操作成功返回真,反之返回错误的。

<强>会话管理类

找到PHP的配置文件PHP。ini,修改为下面内容,保存并重启php-fpm服务。

session.save_handler =,复述,

我们编写一个用来管理会话的类:

& lt; ? php    class  SessionManager {      ,private 美元复述;   ,private  sessionSavePath美元;   ,private  sessionName美元;=,private  sessionExpireTime 美元;60;//复述、会话的过期时间为30年代      ,public  function  __construct () {   ,$ this→redis =, new 复述();//创建phpredis实例   ,$ this→复述→连接(& # 39;127.0.0.1 # 39;,,6379);//连接复述   ,//$ this→复述→身份验证(“123456 x");//授权   ,retval 美元;=,session_set_save_handler (   ,数组(美元,“open"),   ,数组(美元,“close"),   ,数组(美元,“read"),   ,数组(美元,“write"),   ,数组(美元,“destroy"),   ,数组(美元,“gc")   ,);   ,session_start ();   ,}      ,public  function 开放(路径,美元名称){   ,return 真实;   ,}      ,public  function  close () {   ,return 真实;   ,}      ,public  function 阅读($ id) {   美元,美元value =,这→复述→($ id);//获取复述中的指定记录   ,如果美元值){   美元,return 价值;   ,其他}{   ,return  & # 39; & # 39;;   ,}   ,}      ,public  function 写(id、美元数据){   ,如果($ this→复述→设置(id、美元数据)){//以session  id为键,存储   ,$ this→复述→到期(id,这→美元sessionExpireTime);//设置复述,中数据的过期时间,即会话的过期时间   ,return 真实;   ,}      ,return 假;   ,}      ,public  function 破坏($ id) {   ,如果($ this→复述→删除($ id)){//删除复述中的指定记录   ,return 真实;   ,}   ,return 假;   ,}      ,public  function  gc (maxlifetime美元){   ,return 真实;   ,}      ,public  function  __destruct () {   ,session_write_close ();   ,}   }

SessionManager构造函数主要用来连接复述,服务器,使用session_set_save_handler函数设置会话回调函数,并调用session_start函数开启会话功能。因为本例中打开,关闭和gc回调函数的作用不是很大,所以直接返回真的。

在写回调函数中,作以会话ID为键,把会话的数据作为价值存储到复述,服务器,设置会话的过期时间为30秒。在阅读回调函中,作以会话ID为键从复述,服务器中读取数据,并返回此数据。而在摧毁回调函数重,则以会话ID作为关键从复述,服务器中删除对应的会话数据。

<强>使用会话

先建立一个集合。php文件,用来设置会话:

& lt; ? php    require_once  & # 39; SessionManager.php& # 39;;   new  SessionManager ();   $ _SESSION[& # 39;用户名# 39;],=,& # 39;helloweba& # 39;;

使用复述,保存用户会话会话的案例分析