我有一个要求,我的网站总是显示当前在线的用户数。例如,"35741用户当前在线“。这不是基于登录,只是有多少用户目前在我的网站。为此,我尝试使用会话开始/会话结束,但是会话结束并不可靠。因此,我得到了夸大的数字,因为我的会话开始会添加数字,但会话结束不会删除它们,因为它不会触发。
没有额外的信息要从这里收集(报告等),它只是要求数字显示出来。非常简单的请求正在变成一个巨大的交易。任何帮助都是非常感谢的。
编辑:
我应该指定我也尝试使用数据库来实现这一点。包含会话ID和最后一个活动列的简单表。每次点击页面时,我都会检查会话是否在我的数据库中。如果不是,则插入。如果是,则使用活动时间进行更新。然后,我运行一个过程来清理数据库,查找在过去20分钟内没有任何活动的会话。这种方法似乎扼杀了我的SQL服务器和/或IIS。不得不重启网站。
发布于 2009-12-01 06:41:16
最好的方法是像你一样做,但是通过活动来计时。如果给定的会话在大约5分钟内没有访问页面,您可以认为它们不再处于活动状态。
发布于 2009-12-01 06:48:57
如果您使用的是ASP.Net会员资格,请查看GetNumberOfUsersOnline。
发布于 2009-12-01 06:43:01
对于您可以记录的每个用户操作,您需要在特定的时间窗口内将其视为“在线”。根据网站的不同,您可以将其设置为5分钟。实际的web请求应该不会超过一秒。你必须做出一些假设,他们可能会在那个页面上停留多长时间,除了被认为是在线的之外,什么都不做。
这种方法要求您跟踪每个用户最后一次活动的时间。
https://stackoverflow.com/questions/1822921
复制相似问题