2013-02-23 44 views
1

我想找出觸發方法每隔30分鐘運行一次用戶登錄到我的網站的策略。如果用戶仍然登錄,則每30分鐘運行一次方法

我目前有一個名爲signed_id?的方法,它檢查用戶是否已登錄,並且我正在使用delayed_job gem來處理我的應用程序中的其他後臺進程。

我聽說過whenevercron寶石,但我不確定哪些最適合我的特殊需要。有什麼與delayed_job適合嗎?

回答

0

是:用cron更靈活和易於使用的

cron on ruby

+0

我可以找到有關使用cron設置循環任務的信息 - 但不是如何有條件地確定用戶是否登錄到站點。你知道這個用法的例子嗎? – 2scottish 2013-02-23 05:26:24

+0

那麼你可以編寫一個邏輯來檢查你是否有用戶的活動會話。並且你可以在飛行中以有問題的方式設置cron。 – udnisap 2013-02-23 05:48:35

2

嗯,你可以保持一個數據庫記錄的時間戳,該方法的最後觸發的每個用戶(第一次只想每當他們登錄時),並且每分鐘運行一個cron。

你會保持服務器端的記錄,當客戶端第一次登錄時,並保持ping(可能與ajax),以確保用戶仍然登錄。你會讓Javascript執行一個動作(去到服務器執行你的方法)每30分鐘一次,當然是根據你第一次登錄時的服務器端記錄進行計算的。這個計數也會每30分鐘重置一次,繼續循環。

我希望這會有所幫助。

+0

實質上,我正在與外部站點(創建外部站點上的易腐爛會話)進行交互。如果我每30分鐘運行一次特定的呼叫(如果用戶登錄到我的站點),那麼會話將保持打開狀態。 – 2scottish 2013-02-23 05:20:09

+0

我很確定有會話保持打開狀態的服務器端設置,如果這就是您需要完成的所有事情。如果你無法控制這些會議,我會得到你的困境。 我仍然建議使用Javascript來存儲cookies,並保存他們已經登錄的時間的全面記錄,以確定執行此方法的頻率。 – 2013-02-23 05:26:23