对于我的一个类,我们需要计算访问网站的用户的会话长度。我们得到了一个网络日志。网络日志采用这种格式:
IPAddress date httpMethod httpStatus size referrer browserInfo
GET /include/main_page.css HTTP/1.1
httpMethod
看起来是这样的: referrer总是主页:http://www.cs.myCollage.com
或-
我使用的超时值为20分钟。
问题:,我不知道如何判断会话何时结束,而不是何时超时。是用超时结束会话的唯一方法吗?是否有方法检测用户何时离开网站(仅使用日志中的信息)?
这是我当前的策略(假设我们有这些日志):
IPAddress Time httpMethod ...
IP1 2:15 GET something
IP1 2:17 GET something else
IP1 2:30 GET something else
IP1 4:30 GET something else
IP1 4:32 GET something else
这意味着用户有两个会话。我认为第一次会议将是, 15分钟或 35分钟。我应该在会话时间中包括超时吗?
第二届会议将在2分钟至22分钟之间举行。
发布于 2010-11-13 00:37:55
超时值用于分隔来自同一个IP的不同会话(不一定是同一个人)。在您的示例中,您有两个不同的会话,因为从2:30到4:30的时间段大于超时值。
至于确定课时长度,这可能是简单的课堂作业解决方案,也可能是老师想要的:从结束时间中减去开始时间。在你的例子中,第一次会议15分钟,第二次2分钟。
如果这将是一个真实的项目,那么也许每个会话的最后一页也应该被赋予一些价值。为此,可以使用时态局部性方法:
最后一次GET的持续时间可以用它之前的所有页面的平均持续时间来估计。在你的例子中(2: 15 ,2:17,2:30)前两页持续了15分钟,所以估计访问者速度有点慢和/或彻底,第三页持续7.5分钟,会话总数为22.5分钟。从(4:30,4:32)我们推断,最后一页持续了2分钟,会话总数为4分钟。在只有一个页面访问的特殊情况下,您必须有一些持续时间的任意值,比如1分钟。
另一种方法是为每一页设置一个值。有些页面比其他的要花更多的时间来阅读。这意味着您必须读取整个日志,并确定每个页面在会话中的平均访问时间,并将此时间用于页面在会话中的最后一次访问。这是更复杂,可能不是你的家庭作业问题的答案。
最好的现实世界解决方案可能是这两种方法的混合。
https://stackoverflow.com/questions/4169936
复制相似问题