Laravel 4.2会话表未清理


Laravel 4.2 Session Table Not Getting Cleaned Up

我在Bluehost上托管了一个Laravel 4.2应用程序,我正试图弄清楚为什么MySql会话表从未被清理过。我试着增加彩票,但还是没有什么乐趣。有什么想法吗?

以下是相关的session.php设置:

'driver' => 'database',
'lifetime' => 180,
'expire_on_close' => true,
'lottery' => array(2, 100)

在每个请求中,Laravel都会使用会话lottery值来生成一个随机数,该随机数将决定它是否会运行会话垃圾收集。它使用的确切代码是:

mt_rand(1, $config['lottery'][1]) <= $config['lottery'][0];

如果这是真的,则垃圾收集将运行并检查是否有任何早于lifetime设置的条目。

使用默认设置,这意味着mt_rand(1, 100) <= 2必须为true,这将平均每50个请求运行一次垃圾收集器。因此,仅将lottery设置为(20, 100)仍然需要应用程序在触发垃圾收集器之前获取一些请求。

如果您想从表中清除旧会话,只需将lottery值设置为(100, 100)(或任意两个相等的值)并刷新应用程序。