有没有一种方法可以在Laravel中的会话销毁上执行代码?

时间:2019-06-09 11:55:57

标签: php laravel session

我正在尝试为自定义CRM实施时间跟踪。基本思想是使用切换按钮,以便我可以为该特定任务存储“ start_time”和“ end_time”,这两者之间的差异将表示所花费的时间。但是,如果用户关闭浏览器或关闭PC,会发生会话破坏事件,以便在会话破坏后插入“ end_time”吗?

2 个答案:

答案 0 :(得分:0)

您真的不能依靠laravel会话在过期后立即将其删除,因为我相信它是基于一种彩票系统,该系统每100个请求中会清理一次会话。

我建议使用ajax ping来实现某些功能,以便您可以断定当用户关闭浏览器时ping停止。确实没有其他方法可以知道用户是否已关闭浏览器。

答案 1 :(得分:0)

关闭窗口时,会话不一定会被破坏。您可以为onbeforeunload定义一些事件:

window.onbeforeunload = function(){
   // Send a request to the server to notify it of the window being closed/refreshed
}

或者您可以按照Flame的建议进行一些轮询,但是我认为这种方法是不干净的,因为它会产生一些人们希望避免的网络噪声。

您还可以建立一个双工通道,例如WebSocket通道,以便您的服务器知道断开的时间。