0
我正在使用带注销超时的Authlogic。我需要做的是当用户实际超时时记录。我甚至试图制作一个线程,通知用户远离User.logged_in
列表。 看来,当我把一个线程在那里我得到2线程,而不是一个,所以我正在寻找一个更好的解决方案。Authlogic。记录注销超时
这样做的最好方法是什么?
我正在使用带注销超时的Authlogic。我需要做的是当用户实际超时时记录。我甚至试图制作一个线程,通知用户远离User.logged_in
列表。 看来,当我把一个线程在那里我得到2线程,而不是一个,所以我正在寻找一个更好的解决方案。Authlogic。记录注销超时
这样做的最好方法是什么?
我最终通过将以下在应用程序控制器的顶部固定我的线程。
def check_logout
previous_user = {}
loop {
x = User.logged_in
active_user = {}
x.each { |a|
active_user[a[:login]] = a[:login]
previous_user[a[:login]] = a[:login]
}
puts "active = #{active_user}"
previous_user.each { |key,value|
if active_user[key] == nil then
puts "Login timeout for #{value}"
InternalLog.notify_msg("Login timeout for #{value}")
previous_user.delete(key)
end
}
sleep(30)
}
rescue => e0
puts "WORKER THREAD RESCUE"
puts e0
exit end
if $BACKGROUND_THREAD == nil then
$BACKGROUND_THREAD = Thread.new do
check_logout
end
end
对不起,我不似乎明白了为什么我的格式化搞砸(固定) –