Make the cleanup script work a chunk at a time so we don't run out of
memory when there are lots of sessions.
This commit is contained in:
parent
4bc8fcf5b4
commit
b8f3742bc3
1 changed files with 19 additions and 9 deletions
|
@ -2,17 +2,27 @@
|
|||
|
||||
require File.dirname(__FILE__) + '/../config/environment'
|
||||
|
||||
Session.find(:all, :conditions => ["updated_at < ?", 1.week.ago]).each do |session|
|
||||
begin
|
||||
if session[:user] and User.find(session[:user])
|
||||
session.destroy if session.updated_at < 1.month.ago
|
||||
else
|
||||
last_session_id = 0
|
||||
|
||||
begin
|
||||
sessions = Session.find(:all,
|
||||
:conditions => ["updated_at < ? and id > ?", 1.week.ago, last_session_id],
|
||||
:order => :id, :limit => 1000)
|
||||
|
||||
sessions.each do |session|
|
||||
last_session_id = session.id
|
||||
|
||||
begin
|
||||
if session[:user] and User.find(session[:user])
|
||||
session.destroy if session.updated_at < 1.month.ago
|
||||
else
|
||||
session.destroy
|
||||
end
|
||||
rescue Exception => ex
|
||||
puts "Invalid session #{session.session_id}: #{ex.to_s}"
|
||||
session.destroy
|
||||
end
|
||||
rescue Exception => ex
|
||||
puts "Invalid session #{session.session_id}: #{ex.to_s}"
|
||||
session.destroy
|
||||
end
|
||||
end
|
||||
end while sessions.length > 0
|
||||
|
||||
UserToken.delete_all("expiry < NOW()")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue