Question

Je voudrais mesurer combien de temps un utilisateur passe sur mon site. Il est nécessaire pour un site communautaire où vous pouvez dire: «L'utilisateur X a passé 1397 minutes ici »

Après avoir lu certains documents à ce sujet, je sais qu'il n'y a pas moyen idéal pour y parvenir. Vous ne pouvez pas mesurer l'heure exacte. Mais je suis à la recherche d'une approche qui donne une bonne approximation.

Comment pourriez-vous le faire? Mes idées: 1) Ajout de 30 secondes au compteur de temps en ligne sur chaque page vue. 2) Sur chaque page vue, enregistrez l'horodatage en cours. Sur la vue suivante, ajoutez la différence entre l'horodatage enregistrée et l'horodatage en cours au compteur de temps en ligne.

J'utilise PHP et MySQL si cela importe.

J'espère que vous pouvez me aider. Merci d'avance!

Était-ce utile?

La solution

Deux facteurs travaillent contre vous -

  1. Vous ne pouvez collecter des statistiques point en temps (pages vues), et il n'y a aucun moyen raisonnable de détecter ce qui se passait entre ces points;

  2. Même alors, vous seriez compter le temps de la fenêtre du navigateur, pas le temps de l'utilisateur; les utilisateurs peuvent facilement avoir plusieurs onglets ouverts sur plusieurs instances de navigateur simultanément.

Je soupçonne que votre meilleure approximation est une certaine quantité attribue moyenne de temps d'attention par clic, puis multiplier. Mais alors vous pourriez tout aussi bien mesurer les clics.

Autres conseils

Ceci est probablement inutile .... si l'utilisateur dispose de trois onglets ouverts et « visite » de votre site tout en travaillant en fait sur les deux autres onglets? Voulez-vous compter cela?

Pourquoi ne pas juste mesure ce qui peut réellement mesurer ?: références, pages vues, clics, etc.

La collecte et la publicité ce genre de chiffres est complètement en ligne avec le reste du monde des paramètres Web.

Par ailleurs, si quelqu'un pour afficher une page Web, puis, par exemple, partir en vacances de deux semaines, la meilleure façon d'en rendre compte?

Ce que vous pouvez faire est de vérifier si un utilisateur est actif sur la page puis envoyer une demande ajax à votre serveur toutes les X secondes (60 secondes seraient bien se passer?) qu'un utilisateur est actif ou non sur la page.

Ensuite, vous pouvez utiliser la deuxième méthode que vous avez mentionné pour calculer la différence de temps entre deux horodatages « actifs » qui ne sont pas séparés par plus d'un ou deux intervalles. L'ajout de ces donnerait le temps passé par l'utilisateur sur votre site.

Google Analytics inclut un href="http://code.google.com/apis/analytics/docs/tracking/eventTrackerGuide.html" / suivi mécanisme vous pouvez personnaliser et exploiter vraiment obtenir de bonnes mesures de comportement des utilisateurs - je regarde dans cette

Une solution très simple est d'utiliser une iframe cachée qui charge une page web php périodiquement. La page web chargée enregistre l'heure de démarrage (si elle n'existe pas) et le temps d'arrêt. Lorsque la personne quitte la page il vous reste le moment où la personne est arrivé sur le site et la dernière fois qu'ils étaient là. Dans ce cas, l'horodatage est mis à jour toutes les 3 secondes.

J'utilise des fichiers pour stocker les informations du journal. Le nom de fichier que j'utilise se compose de ipaddress.htm mois-jour-année

Exemple code iframe php. Mettre cela 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);


?>

Le javascript pour recharger périodiquement la iframe dans la page 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>

Le iframe dans la page web principale ressemble à ceci:

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

Une façon très simple pour afficher les fichiers d'horodatage:

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

Vous obtenez une page de résultats comme ceci:

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

Je pense que JavaScript côté client analytique est la solution pour cela.

Vous avez le Analitycs Google, Piwik , et aussi des outils de publicités à JS qui font exactement cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top