Easyswoole 框架session在高并发/频繁请求下数据丢失问题记录

1、在EasySwooleEvent.php 文件中初始化session(如下图)

图1中的1处每此请求都会读取session文本生成缓存(具体方式见框架"./vendor/easyswoole/session/src/Session.php")

注:会先判断session缓存在不在,session缓存不在时读取文本生成缓存

图1中的2处是保存session数据到文本并清除生成的缓存

图1

2、造成数据丢失原因主要是图1中的2处

具体保存方法如图2中的3处,具体见图3使用file_put_contents方法,并且图2中的4处会删除内存中的缓存,导致每次请求都会读取session,保存session到文本中的流程,在高并发请求的情况下就会造成读取session文件是为空的情况。

3、解决方法

注释图2中的4处,那么不清除内存后,有效避免频繁读取session文本,那么问题来了,session缓存岂不是总会在缓存中了,会导致缓存越来越大

解决方法如下:

利用gc方法,在清理过期session文本时一起清理session缓存,具体如下图

相关推荐
苍何5 分钟前
开源微信流 APP,手机微信聊天记录,可以直接给 WorkBuddy 和 Obsidian 了
后端
SL_staff21 分钟前
BI大屏嵌入MES的登录态难题:JVS统一账号体系实战解法
java·数据分析·数据可视化
智驭未来掌门人25 分钟前
Qt 项目不建议导入 CLion 说明
后端
乌暮29 分钟前
综合案例:宠物电商系统
java·开发语言·spring·mvc·restful·1024程序员节
Lumos_33 分钟前
P1 签名 (PKCS#1) vs 裸签 (Raw Signature)
后端
今天早睡36 分钟前
调用真实模型,用 Pydantic 校验后再路由
后端
VimorphTech37 分钟前
一段字幕太长,怎样拆句并安排显示时间?
java·spring boot
万联WANFLOW38 分钟前
Kimi K3.1 Pro 接口接入指南:模型选型、费用计算与零数据保留
java·spring boot·python·安全·spring·大模型
智驭未来掌门人38 分钟前
CLion 创建并运行 Qt 项目指南
后端
数据库小学妹41 分钟前
OLAP数据库怎么选、怎么优化?路线、提速与边界
运维·数据库·后端