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_divisorsession.gc_probability 设置,它在会话开始时由 PHP 在内部调用。

如果您的过期会话没有足够频繁地删除,请尝试更改 PHP 的垃圾收集设置 and/or 会话超时设置(请参阅 timeout 选项)(如果适用) .

另见