我不确定最简单的方法是什么。我需要能够检测出谁在我的网站上线。所以当人们查看帖子或其他内容时,它将在用户的名称旁边显示他们是否在线。在论坛首页底部,它将显示所有在线用户。
要实现这样的功能,最简单的方法是什么?我不确定是否需要一个JavaScript来每次加载页面时运行。
谢谢 :)
我不确定最简单的方法是什么。我需要能够检测出谁在我的网站上线。所以当人们查看帖子或其他内容时,它将在用户的名称旁边显示他们是否在线。在论坛首页底部,它将显示所有在线用户。
要实现这样的功能,最简单的方法是什么?我不确定是否需要一个JavaScript来每次加载页面时运行。
谢谢 :)
编辑:如果您希望已打开您网站但处于空闲状态的用户也被显示为在线,可以选择使用JavaScript “ping”服务器(请求一个空白页面)每两分钟左右一次。
你需要维护一个“会话”表,其中包含用户和他们访问页面的时间。
如果用户上次访问时间超过5分钟,则认为用户已离线(并且可以删除该行)。在会话表中的其他用户则被视为“在线”。
首先,没有办法准确地获取当前在线用户数。你能做的最好的事情就是得到一个大概的数字。
想象一下这种情况:一个用户登录到你的网站,点击一些链接,然后只是关闭浏览器标签页而没有退出登录。实际上这很常见。你的服务器永远不知道用户关闭了浏览器,所以如果会话存储在你的服务器上,那么该用户的会话将保持活动状态一段时间(可能是30分钟)。
在一些无状态的Web应用程序中,比如Ruby on Rails应用程序,会话完全存储在浏览器端(在cookie中),每次请求后服务器完全忘记了用户,这使得计算在线用户数量几乎是不可能的。这是简单性和可扩展性之间的权衡。
那么我们怎么才能得到这样的数字呢?我们必须基于妥协做出假设。我们假设如果一个用户最后的请求时间小于30分钟,他/她就在线,然后通过跟踪每个用户最后请求的时间戳,我们可以得到“在线”用户的数量。或者我们可以假设如果一个用户在服务器上的会话仍然存活,他/她就在线,并计算服务器上的会话数。无论哪种方式,我们都必须确信“悬空会话”的数量是可忽略的(我知道这很难)。