cakephp-3是否从数据库中删除过期的会话?

时间:2019-01-28 11:05:45

标签: cakephp cakephp-3.0

我的会话数据库表已满(约2个月后大小接近1GB)。过去的展览日期很多。我可以写一份cron-job来定期删除它们,但这是推荐的方法吗?还是有Cakephp的内置功能来清理过期的会话,而这些会话在我的应用程序中未正确配置或禁用?

我的会话配置:

'Session' => [
    'defaults' => 'database',
    'ini' => [
        'session.cookie_path' => '/',
        'session.cookie_domain' => 'something.local'
    ],
    'timeout' => 4320 // 3 days
],

1 个答案:

答案 0 :(得分:1)

CakePHP的数据库会话处理程序使用标准化的PHP会话处理程序API,即,它实现了SessionHandlerInterface并通过session_set_save_handler()进行了连接。

保存处理程序实现gc()方法,该方法删除过期的会话,即适用条件expires < time()的行。会话开始时,PHP将在内部对其进行调用,具体取决于session.gc_divisorsession.gc_probability的设置。

如果没有足够频繁地删除过期的会话,请在适用的情况下尝试更改PHP的垃圾回收设置和/或会话超时设置(请参见timeout选项)。

另请参见