Bem vindo ao SOS Designers

Faça o seu cadastro gratuito no Portal SOS Designers e tenha um acesso personalizado.

Empresas

Cadastre gratuitamente suas vagas, crie sua propria Lista de Curriculos Favoritos, e tenha um acesso personalizado.

Usuarios

Cadastre gratuitamente seu curriculo, crie sua propria Lista de Noticias Favoritas e tenha um acesso personalizado.

Área de Empresas | Vagas

Área de acesso a empresas cadastradas que desejam postar vagas de empregos no Portal e pesquisar curriculos.

Cadastre-se gratuitamente
Esqueceu a sua senha?

Área de Usuarios | Curriculos

Área do Usuario que deseja cadastrar seu curriculo e pesquisar vagas.



Cadastre-se gratuitamente
Esqueceu a sua senha?


Redes Sociais
Siga o Portal SOS Designers no Twitter Siga o Portal SOS Designers no Facebook

ASP


Você está aqui: Home » ASP » Sistema Monitor

Sistema Monitor


Pesquisar no Portal SOS Designers





Tempo Real



Siga o SOS Designers








pub_flash( 'http://www.sosdesigners.com/banners/web_flash_300x250.swf', 300, 250 ); " alt="Tecnoponta - 300 x 250 - webdesign" />

SISTEMA MONITOR

Quantos são e quem são os usuários online?
Qual o tempo médio de navegação por usuário?
Quais são os horários de maior atividade?
Qual o máximo de usuários navegando simultaneamente?

Os procedimentos utilizados no Sistema Monitor aqui descrito não são necessariamente os melhores em código ou performance. São, no entanto, o que considerei (segundo meu próprio julgamento) ao alcance da maioria dos usuários. Aqueles que esperam apenas "código mastigado" dificilmente farão proveito desse artigo. Um outro detalhe importante é que estou fazendo uso do Global.asa. Mais tarde vou escrever uma adaptação para quem não pode utilizar global.asa (normalmente em hospedagem gratuita).

O primeiro ponto a ser abordado será a contagem, pura e simples, dos usuários ONLINE. Isso é possível através das "Subs" Session_OnStart e Session_OnEnd (no global.asa), conforme descrito abaixo.

Inicialmente você deverá ter definido uma variável Application no Application_OnStart

Sub Application_OnStart
    Application("MaxCurrentVisit") = 0
    Application("OnlineVisit") = 0
End Sub
SubSession_OnStart
    Application("OnlineVisit") = Application("OnlineVisit") + 1
    if Application("OnlineVisit") > Application("MaxCurrentVisit") then
         Application("MaxCurrentVisit") = Application("OnlineVisit")
    End if
End Sub
Sub Session_OnEnd
    Application("OnlineVisit") = Application("OnlineVisit") - 1
End Sub

Session_OnStart é executada a cada vez que uma sessão é iniciada, o navegador é "instanciado". A Session_OnEnd é executada a cada encerramento de sessão, e isso pode ocorrer de 2 maneiras.

  1. a)      Através de Session.Abandon. Se existe um botão "fim" e o desenvolvimento foi correto, haverá uma "chamada" a Session.abandon. O navegador será fechado, ou haverá redirecionamento para página padrão...
  2. b)      Não ocorreu nenhum "request" nos últimos "n" minutos, sendo "n" o valor de Session.TimeOut. É muito utilizado por questões de segurança, e o valor padrão é 20 (minutos). Se o usuário simplesmente fechar o navegador (como normalmente acontece), a sessão expirará pelo tempo, e Session_OnEnd será executada.

Até aqui podemos saber, com uma pequena margem de erro (podemos até mesmo desconsiderar, uma vez que o s servidor precisa tratar a sessão até sua expiração) o número de usuários online, mas ainda não podemos saber QUEM são eles.

Esse é o segundo ponto, e para isso vamos utilizar uma tabela de um banco de dados, lembrando que não é necessariamente a melhor opção quanto à performance, mas sim quanto ao entendimento, à didática.

Vamos identificar o usuário pelo Session.SessionID, gerado a cada sessão. É um identificador único, podendo ser utilizado como chave primária, diferente do IP, que pode ser compartilhado. E ainda há a possibilidade, muito comum, de um mesmo usuário, em uma mesma máquina, abrir o mesmo site várias vezes. Por essa razão, não podemos utilizar o IP como identificador do usuário.

Essa tabela contará, para nosso simples exemplo, com um campo SessionID (numérico), e outro DtLastMov (Data&Hora).

Uma vez que o usuário faça o acesso à primeira página (e isso deve ser tratado, pois o usuário já tarimbado pode ir diretamente à página que deseja), seu SessionID deve ser inserido, juntamente com a Data & Hora. A cada novo request (mudança de página ou "submit" de formulário são casos típicos) o registro com seu SessionID deve ser atualizado com now().

Uma vez que Session_OnStart e Session_OnEnd nos informam o número de usuários online, se fizermos um select to tipo...

  sql = "SELECT TOP " & Application(OnlineVisit) & " * FROM tabela ORDER BY DtLastMov DESC"

… saberemos exatamente QUEM está online! Um campo IP pode ser utilizado ou USER (para sites que cadastram usuários), ou mesmo a combinação de ambos. É possível saber quem são os usuários logados e quem são os visitantes.

Se somarmos n minutos, sendo n o valor de Session.TimeOut ao último movimento de cada usuário podemos ter o tempo que cada um ficou online.

Vamos ver como podemos trabalhar com soma e subtração em campo Data & Hora. Utilizaremos, inicialmente, a função now()

Now() + 1 = Data&hora atual + 1 dia
Now() + (1/24) = Data&hora atual + 1 hora
Now() + (1/24/60) = Data&Hora atual + 1 minuto

Com DateDiff("n", DataHora1, Datahora2) calculamos o intervalo, em minutos, de duas variáveis "datahora". É importante que os segundos serão desconsiderados. Por exemplo:

DateDiff("n",d1, d2) retornará 3.

Uma vez calculado o tempo individual, podemos obter facilmente a média (um pouco de matemática, não mais ASP), além de detalhes como horas de maior tráfego e o que mais o desenvolvedor achar por bem. É importante lembrarmos que o ASP é tão dinâmico quanto nós pudermos ser. A limitação é nossa própria criatividade e capacidade de analisar dados. O número máximo de visitantes já está sendo tratado em Application("MaxCurrentVisit"), no Global.asa, e para que o proposto acima funcione corretamente é necessário tratar cada movimento do usuário. A utilização do Global.asa e as duas variáveis Application são suficiente para saber quantos são os visitantes do momento. A implementação do QUEM tem um certo custo e é necessário que cada movimento do usuário seja rastreado. Você poderá, assim, tratar seus usuários cadastrados e visitantes...

Vimos com um bom nível de detalhamento a teoria para a criação de um sistema monitor. Qualquer esclarecimento maior, ou dúvida quanto à implementação, basta enviar-me um e-mail.

Elildo Mancebo Reis
elildo@aspecto.net
www.aspecto.net


Deixe seu comentário:





© Copyright 2002-2018
Portal SOS Designers
Webmaster: Luiz Antonio Bovi