Pergunta

Gostaria de medir quanto tempo um usuário gasta no meu site. É necessário para um site comunitário onde você possa dizer: "O usuário X tem passado 1397 minutos aqui".

Depois de ler alguns documentos sobre isso, sei que não há maneira perfeita de conseguir isso. Você não pode medir o tempo exato. Mas estou procurando uma abordagem que dê uma boa aproximação.

Como você pôde fazer isso? Minhas idéias: 1) Adicionando 30 segundos ao contador de tempo on -line em todas as visualizações de páginas. 2) Em todas as visualizações de página, salve o registro de data e hora atual. Na próxima visualização, adicione a diferença entre o registro de data e hora salvo e o registro de data e hora atual ao contador de tempo online.

Eu uso o PHP e o MySQL se isso importa.

Espero que você possa me ajudar. Desde já, obrigado!

Foi útil?

Solução

Dois fatores estão trabalhando contra você -

  1. Você só pode coletar estatísticas pontuais (visualizações de página) e não há uma maneira razoável de detectar o que aconteceu entre esses pontos;

  2. Mesmo assim, você estaria contando o horário da janela do navegador, não o tempo do usuário; Os usuários podem facilmente ter várias guias abertas em várias instâncias do navegador simultaneamente.

Suspeito que sua melhor aproximação esteja atribuindo uma quantidade média de tempo de atenção por clique e, em seguida, multiplicando. Mas então você pode medir os cliques.

Outras dicas

Provavelmente, isso é inútil ... e se o usuário tiver três guias abertas e estiver "visitando" o seu site enquanto realmente trabalha nas outras duas guias? Você quer contar isso?

Por que não apenas medir o que realmente pode ser medido?: Referências, visualizações de página, cliques, etc.

Coletar e anunciar esses tipos de números estão completamente alinhados com o resto do mundo das métricas da web.

Além disso - se alguém tivesse uma página da web e, digamos, saia de duas semanas, qual a melhor forma de explicar?

O que você poderia fazer é verificar se um usuário é ativo na página e, em seguida, envie uma solicitação AJAX ao seu servidor a cada x segundos (60 segundos ficariam bem?) Que um usuário está ativo ou não na página.

Em seguida, você pode usar o segundo método que você mencionou para calcular a diferença de tempo entre dois registros de data e hora 'ativos' que não são separados por mais de um ou dois intervalos. Adicioná -los daria o tempo gasto pelo usuário no seu site.

O Google Analytics inclui um muito poderoso Registro/rastreamento de eventos Mecanismo que você pode personalizar e explorar as medidas realmente boas do comportamento do usuário - eu examinaria isso

Uma solução muito simples é usar um iframe oculto que carrega uma página da web PHP periodicamente. A página da web carregada registra a hora de início (se não existir) e o tempo de parada. Quando a pessoa sai da página, você fica com o tempo em que a pessoa chegou ao site e a última vez que esteve lá. Nesse caso, o registro de data e hora é atualizado a cada 3 segundos.

Eu uso arquivos para manter as informações de log. O nome do arquivo que eu uso consiste em ipaddress.htm mensal do mês de ano

Exemplo de código php iframe. Coloque isso em Yourwebsite/yourAnalyticicsiframecode.php:

<?php
  // get the IP address of the sender
  $clientIpAddress=$_SERVER['REMOTE_ADDR'];
  $folder = "yourAnalyticsDataFolder";
  // Combine the IP address with the current date.
  $clientFileRecord=$folder."/".date('d-M-Y')."  ".$clientIpAddress;

  $startTimeDate = "";

  // check to see if the folder to store analytics exists
  if (!file_exists($folder))
  {
    if (!mkdir($folder))
      return;  // error - just bail

  }


  if (file_exists($clientFileRecord) )
  {
    //read the contents of the clientFileRedord
    $lines = file($clientFileRecord);

    $count = 0;

    // Loop through our array, show HTML source as HTML source; and line numbers too.
    foreach ($lines as $line_num => $line)
    {
      echo($line);
      if ($count == 0)
        $startTimeDate = rtrim( $line );
      $count++;

    }
  }

  if ($startTimeDate == "")
    $startTimeDate = date('H:i:s d-M-Y');

  $endTimeDate = date('H:i:s d-M-Y');

  // write the start and stop times back out to the file
  $file = fopen($clientFileRecord,"w");
  fwrite($file,$startTimeDate."\n".$endTimeDate);
  fclose($file);


?>

O javascript para recarregar periodicamente o iframe na página principal da web.:

<!-- Javascript to reload the analytics code -->
<script>
  window.setInterval("reloadIFrame();", 3000);

  function reloadIFrame() {
    document.getElementById('AnalyticsID').src = document.getElementById('AnalyticsID').src
      //          document.frames["AnalyticsID"].location.reload();
  }
</script>

O iframe na página principal da web se parece com o seguinte:

<iframe id="AnalyticsID" name="AnalyticsID" src="http://yourwebsite/yourAnalyticsiFrameCode.php" width="1"
height="1" frameborder="0" style="visibility:hidden;display:none">
</iframe>

Uma maneira muito simples de exibir os arquivos de carimbo de hora:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>
  <title></title>
</head>

<body>
Analytics results
<br>
<?php
  $folder = "yourAnalyticsDataFolder";
  $files1 = scandir($folder);
  // Loop through the files
  foreach ($files1 as $fn)
  {
    echo ($fn."<br>\n");
    $lines = file($folder."/".$fn);
    foreach ($lines as $line_num => $line)
    {
      echo("  ".$line."<br>\n");
    }
    echo ("<br>\n <br>");

  }

?>
</body>

</html>

Você recebe uma página de resultados como esta:

22-Mar-2015 104.37.100.30

18:09:03 22-mar-2015

19:18:53 22-mar-2015


22-Mar-2015 142.162.20.133

18:10:06 22-mar-2015

18:10:21 22-mar-2015

Eu acho que o Javascript Analytics do lado do cliente é a solução para isso.

Você tem o Google Analitycs, Piwik, e também há ferramentas comerciais em JS que fazem exatamente isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top