algorithm - 确定网站的 session 时间

标签 algorithm parsing

对于我的一门类(class),我们需要计算用户访问网站的 session 时长。我们得到了一个网络日志。网络日志的格式如下:

IPAddress date httpMethod httpStatus size referrer browserInfo 
  • httpMethod 如下所示:GET/include/main_page.css HTTP/1.1
  • 引荐来源始终是主页:http://www.cs.myCollage.com-

我使用的超时值为 20 分钟。

问题: 除了超时之外,我不确定如何判断 session 何时结束。是用超时结束 session 的唯一方法吗?有没有办法检测用户何时离开网站(仅使用日志中的信息)?


这是我目前的策略(假设我们有这些日志):

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

这意味着用户有两个 session 。我认为第一节课要么 15 分钟要么 35 分钟。我应该在 session 时间中包括超时吗?

第二个 session 将在 2 分钟到 22 分钟之间。

最佳答案

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

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

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

最后一个 GET 的持续时间可以通过它之前的所有页面的平均持续时间来估计。在您的示例 (2:15,2:17,2:30) 中,前两页持续了 15 分钟,因此估计访问者有点慢和/或彻底,第三页持续了 7.5 分钟, session 总数为 22.5分钟。从 (4:30,4:32) 我们推断最后一页持续了 2 分钟, session 总时长为 4 分钟。在我们只有一个页面访问的特殊情况下,您必须为持续时间指定一些任意值,例如 1 分钟。

另一种方法是为每个页面赋予一个值。有些页面比其他页面需要更多时间阅读。这意味着您必须阅读整个日志并确定每个页面在 session 中期时的平均访问时间,并将此时间用于页面最后一次 session 的情况。这更复杂,可能无法回答您的家庭作业问题。

现实世界中最好的解决方案可能是这两种方法的结合。

关于algorithm - 确定网站的 session 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4169936/

相关文章:

ios - Swift中JSON解析返回数据

c - C 中的子字符串方法如何工作

algorithm - 分布式算法设计

python - 计算笛卡尔积的线性时间算法

java - hibernate 6 : What is SQM?

java - 从字符串中提取模式

algorithm - 使用 Bailey–Borwein–Plouffe (BBP) 公式计算 pi 的第 n 位

algorithm - 该图伪代码的功能

regex - 用 bash 解析字符串并提取数字

c# - 使用dot net或Java解析Word文档内容