lib/include/class_knjappserver_cleaner.rb in knjappserver-0.0.20 vs lib/include/class_knjappserver_cleaner.rb in knjappserver-0.0.21

- old
+ new

@@ -6,11 +6,11 @@ time = 15 end #This should not be runned via _kas.timeout because timeout wont run when @should_restart is true! - knj Thread.new do - begin + begin loop do sleep time if @config.has_key?(:restart_when_used_memory) and !@should_restart mbs_used = (Knj::Php.memory_get_usage / 1024) / 1024 @@ -89,53 +89,45 @@ 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 => @config[:cleaner_timeout]) do - self.clean - end + self.timeout(:time => @config[:cleaner_timeout], &self.method("clean")) 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] + STDOUT.print "Cleaning sessions on appserver.\n" if @config[:debug] + + #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 - #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 - - if session_data[:time_lastused].to_i > time_check - newsessions[session_hash] = session_data - session_not_ids << session_data[:dbobj].id - end + if session_data[:time_lastused].to_i > time_check + newsessions[session_hash] = session_data + session_not_ids << session_data[:dbobj].id 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 + + @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 + + #Call various user-connected methods. + @events.call(:on_clean) if @events end end \ No newline at end of file