2010-07-24 47 views
0

有沒有簡單的方法來統計活動用戶或訪客(未登錄用戶)訪問我的滑軌應用程序的數量?紅寶石在滑軌上的客人人數

現在我有一種方法可以通過爲用戶提供last_seen_at列來統計過去15分鐘內登錄用戶的數量。不過,我不想使用數據庫來計算活動用戶或訪客的總數。

我用Rails 3

+0

從數據庫中獲取它有什麼問題?任何原因? – 2010-07-24 23:41:00

回答

2

一般情況下,在計算最後X分鐘看到用戶是你想要的。問問你自己,你想如何定義在線用戶?他們並不總是連接到服務器,他們只是不時地提出一些請求。

+0

好吧。最後15分鐘會沒事的。我的意思是我想我可以有一個模型/表格記錄每個IP,並在每次用戶訪問另一個頁面時觸摸列中的更新。但我不知道這是否有效。 – kentor 2010-07-26 06:47:44

+0

我只是將列last_seen_at和last_seen_from_ip添加到您的用戶表中,並在每個用戶的操作中用原始(高效)插入來更新它。 – skalee 2010-07-26 10:45:30

2

您可以使用Juggernaut(使用Flash)將用戶的Web瀏覽器連接到您的Ruby應用程序。然後,您可以使用show_clients方法遍歷所有註冊的客戶端。

+0

我不知道Juggernaut是否適用於Rails 3.我在一個新的應用程序上嘗試過它,它似乎沒有工作。 – kentor 2010-07-26 07:48:38

0

如果使用active_record爲session_store,您可以輕鬆地查詢您的會話表和你的活躍用戶從您的用戶表,像這樣的區別:

time_period = 24.hours.ago 
number_of_active_users = User.where('updated_at > ?', time_period).count 
number_of_active_sessions = ActiveRecord::SessionStore::Session.where('updated_at > ?', time_period).count 
number_of_guests = number_of_active_sessions - number_of_active_users 

配置session_store使用active_record指令在配置被發現/initializers/session_store.rb。

您將需要添加一個後臺工作來清除陳舊的會話,以便表不會無謂地膨脹。