cakephp - cakephp-3 是否从我的数据库中删除过期会话?
问题描述
我的会话数据库表正在填满(大约 2 个月后大小接近 1GB)。有很多会话具有过去的过期日期。我可以编写一个 cron-job 来定期删除它们,但这是推荐的方法吗?或者有 cakephp 内置功能来清理过期会话,在我的应用程序中没有正确配置或禁用?
我的会话配置:
'Session' => [
'defaults' => 'database',
'ini' => [
'session.cookie_path' => '/',
'session.cookie_domain' => 'something.local'
],
'timeout' => 4320 // 3 days
],
解决方案
CakePHP 的数据库会话处理程序使用标准化的 PHP 会话处理程序 API,即它实现SessionHandlerInterface
并通过session_set_save_handler()
.
保存处理程序实现gc()
删除过期会话的方法,即条件expires < time()
适用的行。它在会话开始时由 PHP 在内部调用,具体取决于session.gc_divisor
和session.gc_probability
设置。
如果您的过期会话没有足够频繁地删除,请尝试更改 PHP 的垃圾收集设置和/或会话超时设置(请参阅timeout
选项)(如果适用)。
也可以看看
推荐阅读
- android - 使用画布和绘画将多个文本与图像一起放置的问题
- android - Facebook 登录与 Flutter 的集成
- mongodb - 添加条件和对象数组,mongodb
- kubernetes - Pod1 在使用 istio-demo-auth.yaml 时无法与 Pod2 通信
- arrays - 使用多个端点访问 JSON 嵌套键值 Swift 4
- ios - 快速在单元格问题中动态创建表格视图按钮
- angular6 - matDialog中的延迟加载模块
- javascript - Vue.js 从 Browserify 到 Webpack
- swift - 快速映射高阶函数格式
- ssl - 使用 256 个 SAN 创建 CSR