我在Bluehost上托管了一个Laravel 4.2应用程序,我正在尝试弄清楚为什么MySql会话表永远不会被清除。我试过增加乐透但仍然没有乐趣。有什么想法吗?
以下是相关的session.php设置:
'driver' => 'database',
'lifetime' => 180,
'expire_on_close' => true,
'lottery' => array(2, 100)
答案 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个相等的值),然后刷新应用。