Pregunta

Me gustaría medir cuánto tiempo pasa un usuario en mi sitio web. Es necesario para un sitio de la comunidad donde puede decir: "El usuario X ha pasado 1397 minutos aquí".

Después de leer algunos documentos sobre esto, sé que no hay una manera perfecta de lograr esto. No puedes medir la hora exacta. Pero estoy buscando un enfoque que brinde una buena aproximación.

¿Como pudiste hacer esto? Mis ideas: 1) Agregar 30 segundos al contador de tiempo en línea en cada vista de página. 2) En cada vista de página, guarde la marca de tiempo actual. En la siguiente vista, agregue la diferencia entre la marca de tiempo guardada y la marca de tiempo actual al mostrador de tiempo en línea.

Uso PHP y MySQL si esto importa.

Espero que puedas ayudarme. ¡Gracias por adelantado!

¿Fue útil?

Solución

Dos factores están funcionando en su contra -

  1. Solo puede recopilar estadísticas de punto en el tiempo (vistas de página), y no hay una forma razonable de detectar lo que sucedió entre esos puntos;

  2. Incluso entonces, contaría el tiempo de la ventana del navegador, no el tiempo de usuario; Los usuarios pueden tener fácilmente múltiples pestañas abiertas en múltiples instancias del navegador simultáneamente.

Sospecho que su mejor aproximación es atribuir una cantidad promedio de tiempo de atención por clic y luego multiplicar. Pero entonces podría medir los clics.

Otros consejos

Esto probablemente no tenga sentido ... ¿Qué pasa si el usuario tiene tres pestañas abiertas y está "visitando" su sitio mientras trabaja en las otras dos pestañas? ¿Quieres contar eso?

¿Por qué no solo medir lo que realmente se puede medir?: Referencias, vistas de página, clics, etc.

Recopilar y anunciar este tipo de números está completamente en línea con el resto del mundo de las métricas web.

Además, si alguien trajera una página web y luego, por ejemplo, pase unas vacaciones de dos semanas, ¿cómo es la mejor manera de contabilizarlo?

Lo que podría hacer es verificar si un usuario está activo en la página y luego envíe una solicitud AJAX a su servidor cada X segundos (¿estarían bien 60 segundos?) Que un usuario está activo o no en la página.

Luego, puede usar el segundo método que ha mencionado para calcular la diferencia de tiempo entre dos marcas de tiempo 'activas' que no están separadas por más de uno o dos intervalos. Agregar esto daría el tiempo dedicado al usuario en su sitio.

Google Analytics incluye un muy poderoso Registro/seguimiento de eventos mecanismo puede personalizar y aprovechar para obtener mediciones realmente buenas del comportamiento del usuario: lo investigaría

Una solución muy simple es usar un iframe oculto que cargue una página web de PHP periódicamente. La página web cargada registra la hora de inicio (si no existe) y el tiempo de parada. Cuando la persona deja la página, se queda con el momento en que la persona llegó por primera vez al sitio y la última vez que estuvo allí. En este caso, la marca de tiempo se actualiza cada 3 segundos.

Utilizo archivos para contener la información del registro. El nombre de archivo que uso consiste en ipaddress del año mes de día

Ejemplo de código PHP IFRAME. Pon esto en YourWebSite/YourAnalyticsiframecode.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);


?>

El JavaScript recargará periódicamente el iframe en la página web principal.:

<!-- 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>

El iframe en la página web principal se ve así:

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

Una forma muy sencilla de mostrar los archivos de selección de tiempo:

<!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>

Obtiene una 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

Creo que JavaScript Analytics del lado del cliente es la solución para esto.

Tienes el Google AnalityCS, piwik, y también hay herramientas comerciales en JS que hacen exactamente eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top