如何检测用户是否通过PHP断开连接?

时间:2012-08-08 12:13:19

标签: php

有没有办法检测用户是否与互联网断开连接? stackoverflow在您想发布问题时的方式。我想不出有任何方法可以做到这一点。有人可以对这个问题有所了解吗?

2 个答案:

答案 0 :(得分:4)

当Windows关闭时,您可以将AJAX请求发送到PHP脚本:

window.onbeforeunload = function(){
    // Request goes here
}

另外,您可以使用websocket-technology(您可以使用phpDaemon)永久连接服务器,这样您就可以知道用户何时从互联网或您的站点断开连接或者是非常地(使用setInterval功能)ping你的服务器。

答案 1 :(得分:3)

我猜Stack Overflow使用AJAX,这是一个在浏览器内部客户端执行的JavaScript驱动程序。这个ajax设置负责在例如发布新答案时通知用户,并让他们有机会加载所述新答案而无需重新加载整个页面。

此构造有一种方法可以检测与服务器通信中的错误,并将其解释为用户被断开连接,从而产生警告。

但是,这要求用户仍然打开浏览器。 JavaScript和AJAX中还有各种其他功能,可以在用户关闭页面时执行某些操作,但它们都不被视为始终工作。毕竟没有银子弹

从服务器端,可以监视用户客户端的AJAX的常量乒乓,并在此ping消失时执行某些操作。比如:用户在过去两分钟内每隔5秒就一直在ping我们,但现在这个ping已经丢失了。

这个问题的主要问题在于PHP的原理,每个页面基本上都是独立存在的。当获取请求时,页面被加载并创建,但是在请求结束时,当前页面实例被拒绝存在,就像每个变量丢失一样,而不是保存在其他地方(cookie,会话,数据库)。 / p>