对于我的一个课程,我们需要计算访问网站的用户的会话长度。我们得到了一个网络日志。 Web日志采用以下格式:
IPAddress date httpMethod httpStatus size referrer browserInfo
httpMethod
如下所示:GET /include/main_page.css HTTP/1.1
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分钟之间。
答案 0 :(得分:1)
超时值用于分隔来自同一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分钟。
另一种方法是为每个页面添加一个值。有些页面比其他页面需要更多时间阅读。这意味着您必须阅读整个日志并确定每个页面在中间会话时的平均访问时间,并将此时间用于页面在会话中最后一次的情况。这更复杂,可能不是你的家庭作业问题的答案。
最佳现实世界解决方案可能是这两种方法的混合。