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