有没有办法检测用户是否与互联网断开连接?当您想要发布问题时,堆栈溢出的方式。我想不出任何方法来做到这一点。有人可以阐明这个问题吗?
您可以在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,会话,数据库)。