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


how to detect user is disconnected via PHP?

有没有办法检测用户是否与互联网断开连接?当您想要发布问题时,堆栈溢出的方式。我想不出任何方法来做到这一点。有人可以阐明这个问题吗?

您可以在Windows关闭时向PHP脚本发送AJAX请求:

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

您可以使用websocket技术(您可以使用phpDaemon)永久连接服务器,以便您知道用户何时与Internet或您的网站断开连接,或者经常(使用setInterval功能)ping您的服务器。

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

这种构造有一种方法可以检测与服务器通信中的错误,它被解释为用户断开连接,从而导致警告。

但是,这要求用户仍打开浏览器。JavaScript 和 AJAX 中还有各种其他函数可以在用户关闭页面时执行某些操作,但它们都不被认为是始终有效的。毕竟没有灵丹妙药

从服务器端,可以监视用户客户端的AJAX的持续乒乓球,并在此ping逐渐消失时执行某些操作。比如:用户在过去两分钟内每 5 秒 ping 一次我们,但现在这个 ping 不见了。

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