cakephp-3 是否从我的数据库中删除过期的会话?
Is cakephp-3 removing expired sessions from my database?
我的 session 的数据库 table 正在填满(约 2 个月后大小接近 1GB)。有很多 session 的过期日期。我可以写一个 cron-job 来定期删除它们,但这是推荐的方法吗?或者 cakephp 有一个内置函数来清理过期的 sessions,但在我的应用程序中没有正确配置或禁用?
我的session配置:
'Session' => [
'defaults' => 'database',
'ini' => [
'session.cookie_path' => '/',
'session.cookie_domain' => 'something.local'
],
'timeout' => 4320 // 3 days
],
CakePHP 的数据库会话处理程序使用标准化的 PHP 会话处理程序 API,即它实现了 SessionHandlerInterface
并通过 [=11 连接=].
保存处理程序实现了删除过期会话的gc()
方法,即条件expires < time()
适用的行。根据 session.gc_divisor
和 session.gc_probability
设置,它在会话开始时由 PHP 在内部调用。
如果您的过期会话没有足够频繁地删除,请尝试更改 PHP 的垃圾收集设置 and/or 会话超时设置(请参阅 timeout
选项)(如果适用) .
另见
- PHP Manual > Function Reference > Session Extensions > Sessions > SessionHandler > gc()
- PHP Manual > Function Reference > Session Extensions > Sessions > Installing/Configuring > ini.session.gc-divisor
- PHP Manual > Function Reference > Session Extensions > Sessions > Installing/Configuring > ini.session.gc-probability
- Cookbook > Sessions > Session Configuration
- Cookbook > Sessions > Setting ini directives
我的 session 的数据库 table 正在填满(约 2 个月后大小接近 1GB)。有很多 session 的过期日期。我可以写一个 cron-job 来定期删除它们,但这是推荐的方法吗?或者 cakephp 有一个内置函数来清理过期的 sessions,但在我的应用程序中没有正确配置或禁用?
我的session配置:
'Session' => [
'defaults' => 'database',
'ini' => [
'session.cookie_path' => '/',
'session.cookie_domain' => 'something.local'
],
'timeout' => 4320 // 3 days
],
CakePHP 的数据库会话处理程序使用标准化的 PHP 会话处理程序 API,即它实现了 SessionHandlerInterface
并通过 [=11 连接=].
保存处理程序实现了删除过期会话的gc()
方法,即条件expires < time()
适用的行。根据 session.gc_divisor
和 session.gc_probability
设置,它在会话开始时由 PHP 在内部调用。
如果您的过期会话没有足够频繁地删除,请尝试更改 PHP 的垃圾收集设置 and/or 会话超时设置(请参阅 timeout
选项)(如果适用) .
另见
- PHP Manual > Function Reference > Session Extensions > Sessions > SessionHandler > gc()
- PHP Manual > Function Reference > Session Extensions > Sessions > Installing/Configuring > ini.session.gc-divisor
- PHP Manual > Function Reference > Session Extensions > Sessions > Installing/Configuring > ini.session.gc-probability
- Cookbook > Sessions > Session Configuration
- Cookbook > Sessions > Setting ini directives