如何在Laravel中从数据库中删除会话

时间:2019-08-29 19:26:21

标签: php laravel session laravel-5.8

我试图将会话存储在数据库中而不是文件中。 所以在我的.env文件中:-

  

SESSION_DRIVER =数据库

& 在我的config / session.php中:-

  

'驱动程序'=> env('SESSION_DRIVER','数据库'),'表'=>'会话',

所以现在做完之后:

  

$ request-> session()-> flush()

要在我的控制器中删除会话,会话值仍存储在我的数据库中。尽管在控制器中刷新会话后,我已经检查了会话密钥是否存在,或者它显示会话的位置不存在,但是为什么未从数据库中删除会话?也在我的数据库表 sessions < / em> 用户ID 显示 NULL 为什么?

我以前曾经将会话存储在文件中。现在,我正在尝试将会话存储在数据库中。谁能帮我。

1 个答案:

答案 0 :(得分:1)

仅在调用 会话垃圾收集器 之后,数据库中的旧会话行才会被删除,具体功能为gc()

此函数有可能在每个请求上被调用,您可以使用session.lottery配置值来控制其运行的机会。

但是请不要担心,即使会话行仍然存在于数据库中,但注销后它们会失效(user_id为空),只有上面的gc()函数才会删除。

Session::flush()Session::regenerate(true)都不会删除旧的会话行。