代码之家  ›  专栏  ›  技术社区  ›  sixtyfootersdude

确定网站的会话时间

  •  0
  • sixtyfootersdude  · 技术社区  · 14 年前

    对于我的一个课程,我们需要计算访问网站的用户的会话长度。我们得到了一个网络日志。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分钟之间。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Dialecticus    14 年前

    超时值用于分隔来自同一IP(不一定是同一个人)的不同会话。在您的示例中,有两个不同的会话,因为从2:30到4:30的时间段大于超时值。

    至于课时长度的确定,这可能是一个简单的课堂作业解决方案,也可能是老师的想法:从结束时间中减去开始时间。在你的情况下,第一节课15分钟,第二节课2分钟。

    如果这是一个真实的项目,那么也许每个会话的最后一页也应该被赋予一些价值。为此,您可以使用时间局部性方法:

    最后一次获取的持续时间可以通过之前所有页面的平均持续时间来估计。在你的例子(2:15,2:17,2:30)中,前两页持续了15分钟,所以估计访问者有点慢和/或彻底,第三页持续了7.5分钟,会话总数为22.5分钟。从(4:30,4:32)开始,我们推断最后一页持续了2分钟,总共4分钟。在特殊情况下,我们只有一页访问,你必须有一些任意的持续时间值,如1分钟。

    另一种方法是对每一页都设置一个值。有些页面比其他页面需要更多的时间阅读。这意味着您必须阅读整个日志并确定每页在会话中的平均访问时间,并将此时间用于最后一页在会话中的情况。这是更复杂的,可能不是你的家庭作业问题的答案。

    最好的现实解决方案可能是这两种方法的混合。