我正在對基於成員的站點進行修改,其所有者希望能夠跟蹤數據庫後端中所有用戶在站點(登錄/註銷)上花費的時間。登錄很簡單;有一個入口點(登錄表單),因此登錄可以在數據庫發生時立即引發。如何跟蹤基於Web的登錄和註銷?
然而,註銷有點棘手,因爲除非用戶點擊「註銷」來明確告訴我們他們正在離開解決方案會變得更加麻煩(以及用戶點擊註銷的真正次數是多少?)。一種可能性(就跟蹤站點上的總時間而言)將是在數據庫中註冊每個頁面載入並將其與裝載它的用戶相關聯;問題在於該網站是一個基於會員制的視頻傳送網站(不是你在想什麼!),他們的最後瀏覽量可能會是一個二十或三十分鐘的視頻。我們需要捕捉在最後一頁上花費的時間,而不僅僅是加載時間。
我想到了兩種可能的解決方案,這兩種解決方案都不那麼優雅。第一個是通過javascript來捕獲所有的「卸載」事件,並將一個調用註冊到「logout.php」(假設XMLHttpRequest或任何不會在頁面卸載後立即死掉);問題在於內部鏈接也會註冊爲卸載事件,因此單擊任何鏈接都會將用戶註銷(您可以在「卸載」處理程序中檢查一個標誌,並讓所有內部鏈接設置該標誌 - 不難做到動態,但有點kludgy)。另一種方法是每隔60秒左右設置一次ping數據庫的時間間隔,這讓我們知道用戶仍然在網站上,然後在抽取用戶歷史記錄來計算出該會話的總長度時進行一些數學計算;這似乎也有點ha。。而且,這些解決方案都不適用于禁用JS的用戶。
看來這個問題並不是那麼不尋常,而且還有更好的方法;有沒有解決這個問題的最佳實踐方法?如果沒有,您是否看到了改進這些解決方案的方法?