我需要向我的用户展示目前在线的其他用户,我本可以维护一个登录和注销日志,基于此,我可以在网上统计总人数,但很多时候用户不注销,因此我的计数将无效。
以下是显示用户在线的标准:
以下是不应在线显示使用的标准
G 219
我不知道该怎么做。我在服务器端使用php和mysql和mongo作为数据库,请帮助我.
提前感谢
发布于 2012-04-26 16:32:26
有一种方法可以确保用户是“在线”的。要做到这一点,您需要理解,在“联机”中,人们通常指的是用户在中在线的时刻是;虽然检查这一点不容易(甚至不可能),但检查用户是否在x时间内做了任何操作非常容易,这是大多数程序员的选择。
很简单:
为数据库中的每个登录用户创建一个字段,称为last_activity.
last_activity设置为当前time()stamp.
$x秒数。(通常是15分钟、30分钟或1小时),"SELECT * FROM users WHERE last_activity >= ". (time() - $x)
$x秒内加载了一个页面。与其他不同的是,在PHP和web浏览器中,无法确定用户何时关闭了浏览器中的某个页面,因此在技术上不可能知道用户何时关闭了浏览器窗口或退出了网站。
顺便说一句,我撒谎了,有一个方法,但它真的很昂贵,所以请仔细考虑一下,因为它可能会使您的服务器崩溃或类似的事情:
below).
last_activity字段(使用AJAX作为javascript代码),而y秒需要update.php (仅是网站每页中Javascript的example).
y是您可以使用的更大的数字(< 30秒可能是使用当前time()stamp.
last_activity的bad)).
update.php )--当您想查找在线用户时,使用$x = $y + 1的查询与使用$x = $y + 1之前的查询相同。< code >H 239G 240使用最新的解决方案,您可以确保每当用户不再在页面上运行AJAX调用时,他也不会运行AJAX调用,然后在y秒内将不再考虑在线调用。这是一个与第一个非常相似的解决方案,但您可以将y设置为比以前的x小。通过这种方式,您可以获得更多关于用户浏览器窗口当前状态的信息,但您的数据库负载要比以前多得多。
发布于 2012-04-26 16:01:31
几乎所有显示用户在线的网站实际上都显示“用户在最后X分钟内在线”。只需跟踪每个用户上次加载页面的时间,并计算最后X分钟中有多少用户这样做(X是您想要考虑的“在线”)。
https://stackoverflow.com/questions/10337050
复制相似问题