我们的目标是建立时间表,说明用户在线的时间段。(我们在谈论什么用户以及他在哪里在线并不重要)要获取有关在线用户的信息,我们可以调用 API 方法 someservice.com/api/?call= whoIsOnline
whoIsOnline方法将为我们提供当前在线的用户列表。但是没有 API 方法可以获取有关谁不在线的信息。
因此,我们应该使用从whoIsOnline获得的信息来构建我们的时间线。当然会有测量误差(我们无法实时跟踪信息)。假设我们将每 2 分钟调用一次 whoIsOnline方法(是的,我们将每 2 分钟通过 cron 运行我们的脚本)。
例如,在 08:00 调用whoIsOnline将返回
Peter_id
Michal_id
Andy_id
在 08:02调用whoIsOnline将返回
Michael_id
Andy_id
George_id
如您所见,Peter 下线了,但我们有新的在线用户——George。
可用的工具是Db(MySQL) / 文本文件 / 键值存储 (Redis/memcache);随意选择其中任何一个(甚至全部)。
所以,我们必须得到这样的信息
George_id was online...
12 May: 08:02-08:30, 12:40-12:46, 20:14-22:36
11 May: 09:10-12:30, 21:45-23:00
10 May: was not online
现在问...
- 您将如何存储信息以实施此类时间表?
- 您将如何查询/计算有关用户在线时间段的信息?
附加信息..
- 您不能更新有关离线用户的信息,只能更新“当前”在线的用户。
- 解决方案应该是灵活的:时间线信息可以表示为与任何时区相关。
- 我们应该只保留最近 7 天的信息。
- 每个在线看到的用户都会自动在我们的数据库中获取自己的标识符。