我的会话数据库表已满(约2个月后大小接近1GB)。过去的展览日期很多。我可以写一份cron-job来定期删除它们,但这是推荐的方法吗?还是有Cakephp的内置功能来清理过期的会话,而这些会话在我的应用程序中未正确配置或禁用?
我的会话配置:
'Session' => [
'defaults' => 'database',
'ini' => [
'session.cookie_path' => '/',
'session.cookie_domain' => 'something.local'
],
'timeout' => 4320 // 3 days
],
答案 0 :(得分:1)
CakePHP的数据库会话处理程序使用标准化的PHP会话处理程序API,即,它实现了SessionHandlerInterface
并通过session_set_save_handler()
进行了连接。
保存处理程序实现gc()
方法,该方法删除过期的会话,即适用条件expires < time()
的行。会话开始时,PHP将在内部对其进行调用,具体取决于session.gc_divisor
和session.gc_probability
的设置。
如果没有足够频繁地删除过期的会话,请在适用的情况下尝试更改PHP的垃圾回收设置和/或会话超时设置(请参见timeout
选项)。
另请参见