Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

  • 0
Omar~

Contador de usuários online?

Pergunta

Bom não sei nem por onde começar então vou perguntar, alguém deve saber...

 

Como eu faria um contador de quem está online?

É mostrar quantas pessoas estão online no website no momento.

 

Bem eu pensei em fazer o seguinte: Ao usuário logar registro no banco de dados que há mais um user online, mas e se ele simplesmente fecha o navegador e não desloga?

Ao mesmo faz parte de outra coisa que quero fazer. Detectar inatividade na página, mas isso fica a critério de outro tópico.

 

Como funciona? Esse fórum utiliza-se disso tanto mostra quem está online quanto detecta inatividade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

2 respostas a esta questão

Recommended Posts

@Omar~, você não armazena simplesmente que o usuário está ativo.

Você armazena em que momento ele esteve ativo a última vez.

 

Você pode armazenar isso:

1 - Através de AJAX + setInterval, digamos, a cada minuto ou 30 segundos, se você precisa de maior precisão.

2 - Ou simplesmente em cada requisição comum você atualiza a informação de data/hora.

 

Na hora de exibir você pega os usuários que estiveram ativos nos últimos X minutos (5 por exemplo).

 

Para fins de performance, você deveria varrer essa tabela periodicamente para remover registros antigos.

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Matheus Tavares disse:

@Omar~, você não armazena simplesmente que o usuário está ativo.

Você armazena em que momento ele esteve ativo a última vez.

 

Você pode armazenar isso:

1 - Através de AJAX + setInterval, digamos, a cada minuto ou 30 segundos, se você precisa de maior precisão.

2 - Ou simplesmente em cada requisição comum você atualiza a informação de data/hora.

 

Na hora de exibir você pega os usuários que estiveram ativos nos últimos X minutos (5 por exemplo).

 

Para fins de performance, você deveria varrer essa tabela periodicamente para remover registros antigos.

 

Entendi, ótima sugestão.

Mesmo que o usuário faça o login eu entre por permanência de conexão, lanço um registro pegando a time() daquele momento e aumentando +1 no contador.

E a cada X intervalo de tempo faço a atualização da tabela.

 

Sobre registros antigos, é simples automatizar a limpeza. Todo registro deve conter sua data de inscrição, ao inserir um novo, se houver quantidade X de registros já existentes, é só fazer um delete no que for mais antigo pegando o valor da data. (Fiz isso a algum tempo em um Chat-Box).

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.