一千萬個為什麽

搜索

捕獲某人在線時的時間間隔?你會如何推崇這個功能?

Our aim is to build timelines saying about periods of time when user was online. (It really doesn't matter what user we are talking about and where he was online) To get information about onliners we can call API method, someservice.com/api/?call=whoIsOnline

whoIsOnline method will give us a list of users currently online. But there is no API method to get information about who IS NOT online.

因此,我們應該使用從 whoIsOnline 獲得的信息來構建我們的時間表。當然會出現測量錯誤(我們無法實時跟蹤信息)。假設我們每隔2分鐘調用 whoIsOnline 方法(是的,我們將每隔2分鐘由cron運行我們的腳本)。

例如,在08:00調用 whoIsOnline 將返回

Peter_id
Michal_id
Andy_id

在08:02調用 whoIsOnline 將返回

Michael_id
Andy_id
George_id

正如你所看到的,彼得已經離線,但我們有了新的在線人 - 喬治。

可用的儀器是 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

現在問題......

  1. 您如何存儲信息以實施此類時間表?
  2. 您如何查詢/計算用戶在線時間段的信息?

附加信息..

  1. 您無法更新有關離線用戶的信息,只能更新“當前”在線的用戶。
  2. 解決方案應該靈活:時間線信息可以表示與任何時區有關。
  3. 我們應該保留最近7天的信息。
  4. 在線觀看的每個用戶都會自動在我們的數據庫中獲取自己的標識符。

Uff ..我寫這篇文章真的很難,因為我的英語非常糟糕,但我希望我的問題能為你清楚。

謝謝。

最佳答案

有兩種不同的方法來衡量“在線”狀態:

  1. 假設當有人點擊一個頁面時,他們會在那之後的某個名義間隔,例如5分鐘。因此,如果他們點擊頁面4:03,4:05和4:09,他們的在線間隔時間為4:03到4:09-4:14(取決於您對最終點擊的算法/假設);或

  2. 使用“心跳”Javascript和/或Flash流程來跟蹤網頁的打開頻率。

(1)更常見。 (2)經常讓人們對隱私問題保持謹慎。另一種觀察方式是(1)是被動監視,而(2)是主動監視。

(1)有許多變化。間隔可能不固定。它可能會有所不同,具體取決於用戶所在的頁面。這可以通過假設或統計抽樣甚至只是概率模型來構建。在最簡單的情況下“誰在線?”只是在過去5(例如)分鐘內點擊了某些內容的用戶列表,這很容易理解(因為您正在記錄每個頁面視圖)。

轉載註明原文: 捕獲某人在線時的時間間隔?你會如何推崇這個功能?