2011-03-31 52 views

回答

3

您必須提供自己的會話過期的,我的理解。

This API page爲您提供了一個相當不錯的答案是如何工作的。您可以使用額外的屬性created_on和updated_at創建數據庫表(並且您可以免費獲得時間戳),然後只需通過查看up​​dated_at屬性創建一個作業,以便在需要時將其過期。

This post對如何運行作業的詳細信息。

7

有simplier方式:

ActiveRecord::SessionStore::Session.delete_all(["updated_at < ?", 12.hours.ago]) 

您可以在控制一些操作後調用它,這段代碼殺死所有的死會話。

當然是有爭議的技術,但最簡單的。

Full story

+1

我真的想這樣做異步,就像從一個cronjob。 – Dogweather 2012-04-24 02:39:20

+1

這個效果很好,通過rails runner和隨時隨地創建一個cron作業。 – Rystraum 2012-09-25 07:25:12

+0

我們有類似的問題,並希望通過cron運行,所以我們正在試驗MySQL事件:http://dev.mysql.com/doc/refman/5.5/en/create-event.html。希望這可以幫助其他人跑進同樣的事情。 – 2013-03-04 18:08:18

相關問題