Seguinte, criei um HttpSessionListener para saber quantos usuarios estao on-line, ate ai ta funcionando beleza. So que quando o usuario clica no ‘X’ do browser ou da ALT+F4 ou qq outra coisa eu preciso saber qual usuario que aconteceu isso pq preciso registrar no banco que ele esta desconectado.
Quando isso ocorrer eu so vou saber qdo a sessao expirar, certo ?
Entao como que eu faco no public void sessionDestroyed(HttpSessionEvent se) para saber quem foi para ai mudar no banco a flag ?
Cada usuario tem seu ID de sessao, que é unico. Ao entrar no site, vc registra na session os dados do usuario, e quando a session é destruida, voce pega os dados no Listener e grava no banco.
Rafael
Rafael_Steil
No JForum o padrao é 10 minutos de inatividade para considerar que o usuario foi embora. Um valor mais baixo é impraticavel demais. Alias, utilizo um recusro simples para evitar que a sessao do usuario expire caso ele fique um bom tempo no site, mas sem fazer coisa alguma (lendo mensagens no forum, por exemplo): coloco um iframe que aponta para um .jsp simples, apenas para dar um “ping” na sessao.
Sobre performance, a regra geral eh nao ficar colocando coisas demais na sessao, pois isso consome ram do server.
Rafael
C
carlosmacieljrpe
Só por curiosidade, como você resolveu isso? Me falaram que é um pouco difícil resolver essa questão em PHP. Como você fez em Java?
flw!
C
carlosmacieljrpe
Entendi Rafael, só mais uma dúvida, como seria a forma menos custosa para verificar se o usuário está off line ou on line num site? Por exemplo se ele ficar sem utilizar/clicar o/no site por 10+ minutos? De que forma fazer isso sem prejudicar o desempenho do servidor?