Laravel 4.2会话表没有得到清理

时间:2014-11-04 20:59:01

标签: php mysql session laravel-4

我在Bluehost上托管了一个Laravel 4.2应用程序,我正在尝试弄清楚为什么MySql会话表永远不会被清除。我试过增加乐透但仍然没有乐趣。有什么想法吗?

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

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

1 个答案:

答案 0 :(得分:2)

在每个请求中,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)(或任意2个相等的值),然后刷新应用。