session入库

简介

什么是 SESSION ?

答:一种会话控制技术

为什么需要会话控制技术 ?

  1. 早期互联网采用HTTP协议发送请求,但由于HTTP是无状态的请求,所以网站管理者无法获知当前用户的用户轨迹。

  2. Cookie技术
    相当于超市的会员卡

  3. Session技术
    相当于超市发卡但是保留实体卡,只发给我们卡号(Session_ID)

session 原理图

在这里插入图片描述
由上图可知,session操作主要是对session的增删改查(session文件的读取与写入)操作,但是由于文件读写操作要实现对服务器的I/O进行开销,如淘宝这种大数据系统,如果采用文本方式保存session数据,那么是无法想象的,另如想统计当前在线人数等信息,使用数据集群共享session数据时,都是很难实现的。

那么如何实现对以上问题的解决呢?
答:Session入库技术

Session入库技术实际就是人为更改session数据读取与写入的位置,如下图所示:
在这里插入图片描述

session入库的实现

  1. 要使用到的知识点:
    bool session_set_save_handler ( callable $open , callable $close , callable $read , callable $write , callable $destroy , callable $gc )

功能:实现对session读取存取方式的函数

$open : 打开session读写操作
$close : 关闭session读写操作
$read : 读取session文件(读取数据库中的session信息)
$write : 写入session文件(写入session信息到数据库中)
$destroy : 销毁session文件(删除session信息)
$gc : 当session文件过期时,系统自动删除该文件(删除过期session记录)

  1. session入库类
  • 在open方法中,链接数据库
    在这里插入图片描述
  • 在close方法中,关闭链接资源
    在这里插入图片描述
  • 在read方法中,读取sess_id信息,在read方法中,可以通过参数来调用系统中的session_id
    在这里插入图片描述
  • 在write方法中,实现对session数据库的写入操作
    在这里插入图片描述
  • 在destroy方法中,销毁指定session_id的数据
    在这里插入图片描述
  • 在gc方法中,判断session数据是否过期
    在这里插入图片描述
  • 定义构造方法完成调用
    在这里插入图片描述

结束语

如果您对这篇博文有什么意见或者建议,请评论与我讨论。
如果您觉得还不错的话~可以点个赞鼓励我哦。


版权声明:本文为qq_42725383原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。