2011-08-29 49 views
0

我有一個名爲「sessions」的MySQL表,它包含session_id,user_id,ip_address和last_updated字段。誰在線會話統計信息

我有以下問題:

  1. 什麼,如果用戶沒有瀏覽過這個網站更新「會話」表的最好辦法,或者如果用戶導航到不同的頁面?

  2. 如果用戶導航到需要他們登錄的頁面,在將頁面重定向到登錄頁面之前,記住他們正在查看的頁面的最佳方式是什麼,以便它們可以返回到它登錄後?

  3. 即使同一臺計算機的用戶使用不同的網絡瀏覽器,如何計算當前在線成員/訪客總數以及當天的總成員/訪客總數?

  4. 我想顯示有多少用戶/客人正在查看某個頁面。跟蹤用戶目前在哪個頁面上的最佳方式是什麼?

任何幫助,非常感謝。我一直在撓我的腦袋關於上述一段時間! ;)

回答

0
  1. 任何適合你的方式。 Personlly我更喜歡SQL查詢
  2. 顯示登錄表單到位,沒有重定向
    • 與COUNT(*)
    • noway與會議統計數據表中的普通SQL查詢
    • 沒關係。 2個瀏覽器意味着2個客戶端
  3. 會話表中的另一個字段。
2

您可以根據上次請求的時間戳計算用戶何時在線。我在我的社交網站中使用了UNIX時間戳。

2

如果用戶之前沒有訪問過網站,或者用戶導航到不同的頁面,更新「會話」表的最佳方式是什麼?

我不確定這裏有什麼問題。你現在如何更新表格?你在這個問題中提到的情況下跟蹤什麼?無論他們之前是否訪問過該網站,他們仍然有一個會話。我認爲無論他們瀏覽哪個頁面,都使用相同的代碼來維護會話信息,不是嗎?

如果用戶導航到需要他們登錄的頁面,在將頁面重定向到登錄頁面之前,記住他們正在查看的頁面的最佳方式是什麼,以便它們可以返回登錄後登錄到它?

不記得了。將它作爲參數傳遞給登錄頁面(通常在查詢字符串上),然後在登錄頁面上檢查該參數並將用戶重定向到該頁面,或者如果未指定參數,則將其重定向到默認頁面。您可以使用urlencode()將值添加到查詢字符串(和urldecode()以檢索它)。

即使同一臺計算機的用戶使用不同的網絡瀏覽器,我如何計算當前在線的成員/訪客總數以及當天的總成員/訪客數?

如果他們有不同的網頁瀏覽器,他們仍然會有不同的會話。如何在會話跟蹤中過期數據?要統計當前會話的總數,您只需在該跟蹤表上執行SELECT COUNT(session_id)並篩選活動會話。會話有一個很難跟蹤到期的惡習,因爲用戶並不總是主動告訴網站他們正在註銷或離開。

跟蹤當天的總會話類似,您只需在SQL查詢中使用不同的過濾器。我想last_updated字段將成爲過濾這兩個查詢的關鍵,要麼根據活動用戶的會話超時(20分鐘?)進行過濾,要麼按當天的用戶進行日期過濾。

我想顯示有多少用戶/客人正在查看某個頁面。跟蹤用戶目前在哪個頁面上的最佳方式是什麼?

我想你可以添加一個current_page列(或任何你想將它命名),以您的跟蹤表與用戶的當前頁面每次更新他們的會話活動時間來更新它。 (同樣,您在每個頁面上重複使用相同的會話跟蹤代碼,對嗎?)這樣,用戶每次訪問您網站上的某個頁面時,都會對其進行錄製。

對於會話超時,您仍然會遇到同樣的問題,如果有人剛剛離開或關閉瀏覽器,則會將其顯示爲在該頁面上,直到其會話過期或者它們超出您的過濾器(20分鐘?),但這是可以預料的。