如何在用户关闭浏览器时在控制器中运行方法

How to run method in controller when user close browser in laravel 5

本文关键字:控制器 运行 方法 用户 浏览器      更新时间:2023-09-26

我需要检测当用户关闭浏览器,保存记录在数据库,

那么我怎么知道当用户关闭浏览器?

默认不允许。Laravel是一个服务器端脚本框架。HTTP是一种无状态协议。服务器只有在发送请求时才知道客户端。话虽如此,您可以实现一种机制,从每个连接的客户端定期发送"ping"请求。缺少这些ping请求可能表示用户会话结束。

最后我解决了这个问题,可以检查连接失败或您关闭他的浏览器或关闭他的计算机而没有从我的网站注销,从我的网站注销他并记录他的注销时间

解决方案:

Java脚本:setInterval(函数(){

 $.ajax({
    url: '/home/outFromSystem' ,
    type: 'POST',
    data: {  
        },
    success: function(result) {
                console.log(result);
              },
    error: function(jqXHR, textStatus, errorThrown) {
                console.log(errorThrown);
           }


});

}, 50000);

PHP:outFromSystem(){

       ignore_user_abort(true);
      for ($i = 0; $i < 10; $i++) {
           flush();
           ob_flush();
           if (connection_aborted()) {

                       // your code 

          }
          sleep(1);
     } 
}