lib/include/class_knjappserver_cleaner.rb in knjappserver-0.0.17 vs lib/include/class_knjappserver_cleaner.rb in knjappserver-0.0.18
- old
+ new
@@ -89,34 +89,53 @@
self.handle_error(e)
end
end
#This flushes (writes) all session-data to the server and deletes old unused sessions from the database.
- self.timeout(:time => 300) do
+ self.timeout(:time => @config[:cleaner_timeout]) do
+ self.clean
+ end
+ end
+
+ #This method can be used to clean the appserver. Dont call this from a HTTP-request.
+ def clean
+ self.paused_exec do
STDOUT.print "Cleaning sessions on appserver.\n" if @config[:debug]
- self.paused_exec do
- session_not_ids = []
- time_check = Time.now.to_i - 300
- newsessions = {}
- @sessions.each do |session_hash, session_data|
- session_data[:dbobj].flush
-
- if session_data[:time_lastused].to_i > time_check
- newsessions[session_hash] = session_data
- session_not_ids << session_data[:dbobj].id
- end
- end
+ #Clean up various inactive sessions.
+ session_not_ids = []
+ time_check = Time.now.to_i - 300
+ newsessions = {}
+ @sessions.each do |session_hash, session_data|
+ session_data[:dbobj].flush
- @sessions = newsessions
-
- STDOUT.print "Delete sessions...\n" if @config[:debug]
- @ob.list(:Session, {"id_not" => session_not_ids, "date_lastused_below" => (Time.now - 5356800)}) do |session|
- idhash = session[:idhash]
- STDOUT.print "Deleting session: '#{session.id}'.\n" if @config[:debug]
- @ob.delete(session)
- @sessions.delete(idhash)
+ if session_data[:time_lastused].to_i > time_check
+ newsessions[session_hash] = session_data
+ session_not_ids << session_data[:dbobj].id
end
end
+
+ @sessions = newsessions
+
+ STDOUT.print "Delete sessions...\n" if @config[:debug]
+ @ob.list(:Session, {"id_not" => session_not_ids, "date_lastused_below" => (Time.now - 5356800)}) do |session|
+ idhash = session[:idhash]
+ STDOUT.print "Deleting session: '#{session.id}'.\n" if @config[:debug]
+ @ob.delete(session)
+ @sessions.delete(idhash)
+ end
+
+
+ #Clean database weak references from the tables-module.
+ @db.clean
+
+ #Clean the object-handler.
+ @ob.clean_all
+
+ #Run garbage-collector.
+ GC.start
+
+ #Call various user-connected methods.
+ @events.call(:on_clean) if @events
end
end
end
\ No newline at end of file