如何辨别是否有人离开了

时间:2012-10-08 18:46:41

标签: php mysql ajax

我想知道如何检查是否有人离开了网站/页面并在他们离开后执行了操作。我正在这里阅读,我发现了这个:

  

不,没有。您可以做的最好的是每隔X秒发送一次AJAX请求(可能仅在用户移动鼠标时)。如果服务器没有收到2X秒的任何请求,则假定用户离开。

这就是我以前的计划,但如果他们停止发送请求,你怎么能让服务器做某事(在我的情况下是从数据库中删除它们)?我能想到的一个例子是,当你去网站时,你告诉他们你在这里和网上是如何标记你在聊天中的在线状态,但当你离开它时标记你离线。怎么可能?

编辑:经过一段时间使用cron作业后,我发现网站托管网站不喜欢经常运行cron作业,以便在您的网站上产生“实时”感受。所以我找到了node.js,它的工作效率提高了1000倍,而且更加简单。我推荐任何有同样问题的人使用它,购买托管非常便宜并且它很容易学习,如果你知道你可以在其中构建Javascript没问题。请务必了解异步的工作原理。

3 个答案:

答案 0 :(得分:2)

一种并不常见的方法是定期运行一个用于检查用户列表的cron作业,如果它们在X分钟内处于非活动状态,则执行XYZ。

答案 1 :(得分:1)

Facebook通过Jabber服务使用XMPP协议与用户建立常量实时连接。但是,实施一个并不是一件容易的事。如评论中所述,最简单的解决方案是让客户端每隔几秒钟向服务器发出AJAX请求,以便服务器可以检查用户是否仍在查看该站点。

您可能需要查看my question,这可能与您的相关。

答案 2 :(得分:1)

我开发过程中唯一记得的方法是100%可靠,因为许多因素实际上很可能导致它失误,甚至不能完全运行。最多包括禁用JavaScript的人员。以今天的网站组合在一起的方式不太可能。但人们可以选择关闭它,然后那些恶意行事的人也倾向于将其关闭。

无论如何,我已经阅读过但从未放过太多库存的方法是onunload()事件。你可以使用<body>标签。

示例:

<body onunload="myFunction()">

myFunction()有点JavaScript可以做任何你想要做的事情。

由于许多原因,再次不是非常可靠,但我认为它几乎是所有客户端语言的最佳选择。