云客Drupal源码分析之Session进阶

本文深入探讨Drupal 8的Session系统,包括Session的初始化、存储管理器、会话处理器的包装以及延迟启动特性。重点解析了SessionManager、SessionHandler和相关接口,阐述了数据库存储、会话更新阀值、垃圾回收机制以及与第三方程序的不兼容性问题。
摘要由CSDN通过智能技术生成

在本系列之前写过《云客Drupal源码分析之Session系统》,但那部分仅仅讲到了drupal会话的基础:Symfony的Session组件

至于drupal怎么去使用这个基础就是本主题的内容,本主题是延续篇,将讲述drupal的全部Session知识

请先看上篇,再继续

关于drupal的Session代码除了Symfony的Session组件外,全部都放在了:\core\lib\Drupal\Core\Session

在这个文件夹里不仅仅存放了Session的核心代码,还存放了和用户账户相关的一些代码,因为登陆多和Session有关。

drupal系统的Session子系统是何时初始化并注入到请求对象中的呢?

这个工作是在Drupal\Core\StackMiddleware\Session里完成的,也就是http堆栈中的http_middleware.session层

详情请见本系列前面的《云客Drupal8源码分析之HttpKernel堆栈》

一切从这里开始:$this->container->get("session"); (其实源代码为:$session = $this->container->get($this->sessionServiceName);)

我们来看一看session服务的定义:

使用了类:Symfony\Component\HttpFoundation\Session\Session 有三个参数:

服务:session_manager

属性包:Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag

闪存包:Symfony\Component\HttpFoundation\Session\Flash\FlashBag

(还不知道如何看运行时容器的容器定义数据吗?请见本系列前文的服务容器主题末尾部分)

可见基本使用了Symfony的Session组件,但不同的是使用了不同的SessionStorage 储存管理器

Session处理的核心就是这个储存管理器,它就是本主题的重点,在drupal8的源代码中作者注释到使用SessionStorage

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值