私たちの目的は、ユーザーがオンラインだった期間についてのタイムラインを作成することです。(どのユーザーについて話しているのか、どこでオンラインだったかは問題ではありません) オンライン ユーザーに関する情報を取得するには、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 日間の情報のみを保持する必要があります。
- オンラインで見られるすべてのユーザーは、データベースで自分の識別子を自動的に取得します。