2014-02-26 56 views
0

我正在使用perl和mysql來存儲用戶會話。如果用戶單擊註銷,我可以刪除會話。但是,如果會話過期,它會像殭屍一樣填充數據庫。因此,我必須通過解析每個用戶會話數據並檢索會話的上次訪問時間來刪除會話,然後將其刪除(如果未訪問超過一個小時)。而且它是一個黑客。有沒有乾淨的方式做到這一點? 如果mysql中有任何內容會在會話過期時自動刪除會話。從mysql中刪除過期的會話

回答

2

在會話表中,您可以存儲代表會話最後訪問時間的DATETIME字段。很顯然,每次用戶使用會話訪問資源時,都可以更新此字段。

然後就可以在cron上運行一個Perl腳本,它刪除超過一個小時的所有會話。

例子:

delete from SESSIONS where access_time < DATE_SUB(now(),interval 1 hour) 

這將刪除從SESSIONS表,其中access_time時間戳超過一小時之前的所有記錄。在過去一小時內訪問過的任何會話都不會被刪除。

+0

可以請你解釋一下這個查詢 – gzix

+0

我編輯了我的答案來進一步解釋。 –

+0

如果你可以請告訴我如何在會話表中包含另一列。 – gzix