2010-11-12 63 views
0

對於我的一個課程,我們需要計算訪問網站的用戶的會話長度。我們被給了一個網絡日誌。該網絡日誌的格式如下:確定網站的會話時間

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分鐘之間。

+0

這個問題與算法有關,但與其他標籤只有短暫的關係。如果你只給了它'算法'標籤,你可能會有更多的意見。標籤「解析」更多的是這個問題的精神,而不是「網絡」或「網絡開發」。 – Dialecticus 2010-11-13 00:43:33

回答

1

超時值用於分隔來自同一IP(不一定是同一個人)的不同會話。在你的例子中,你有兩個不同的會話,因爲從2:30到4:30的時間大於超時值。

至於確定會話長度,這可能是一個簡單的課堂作業解決方案,可能是老師想到的:只需從結束時間減去開始時間。在你的情況下,第一場會議需要15分鐘,第二場會議需要2分鐘。

如果這將是一個真實世界的項目,那麼也許每個會話的最後一頁也應給予一定的價值。爲此,您可以使用時間局部性方法:

最後一次GET的持續時間可以通過其之前的所有頁面的平均持續時間進行估計。在你的例子中(2:15,2:17,2:30),前兩頁持續了15分鐘,所以估計訪問者有點慢和/或徹底,第三頁持續了7.5分鐘,會話總數是22.5分鐘。從(4:30,4:32)我們推斷,最後一頁持續2分鐘,會話總數爲4分鐘。在特殊情況下,我們只有一次頁面訪問,您必須持續一段時間的任意值,例如1分鐘。

另一種方法是爲每個頁面添加一個值。某些頁面比其他頁面需要更多時間閱讀。這意味着您必須閱讀整個日誌並確定每個頁面處於中間會話時的平均訪問時間,並將此時間用於頁面最後一次會話時的情況。這更復雜,可能不是您的作業問題的答案。

最好的現實世界的解決方案可能是這兩種方法的組合。