Frage

Ich möchte messen, wie viel Zeit ein Benutzer auf meiner Website verbringt. Es ist für eine Community -Site erforderlich, auf der Sie sagen können: "Benutzer X hat hier 1397 Minuten verbracht."

Nachdem ich einige Dokumente dazu gelesen habe, weiß ich, dass es keine perfekte Möglichkeit gibt, dies zu erreichen. Sie können die genaue Zeit nicht messen. Aber ich suche einen Ansatz, der eine gute Annäherung verleiht.

Wie konntest du das tun? Meine Ideen: 1) 30 Sekunden zum Online -Zeitzähler auf jeder Seitenansicht hinzufügen. 2) Speichern Sie auf jeder Seitenansicht den aktuellen Zeitstempel. Fügen Sie bei der nächsten Ansicht den Unterschied zwischen dem gespeicherten Zeitstempel und dem aktuellen Zeitstempel zum Online -Zeitschalter hinzu.

Ich benutze PHP und MySQL, wenn dies wichtig ist.

Ich hoffe ihr könnt mir helfen. Danke im Voraus!

War es hilfreich?

Lösung

Zwei Faktoren arbeiten gegen Sie -

  1. Sie können nur Punkt-in-Zeit-Statistiken (Seitenansichten) sammeln, und es gibt keinen vernünftigen Weg, um festzustellen, was zwischen diesen Punkten passiert ist.

  2. Selbst dann würden Sie die Browser -Fensterzeit zählen, nicht die Benutzerzeit. Benutzer können einfach mehrere Registerkarten in mehreren Browser -Instanzen gleichzeitig geöffnet haben.

Ich vermute, dass Ihre beste Annäherung darin besteht, eine durchschnittliche Menge an Aufmerksamkeitszeit pro Klick zuzuschreiben und dann zu multiplizieren. Aber dann könnten Sie auch Klicks messen.

Andere Tipps

Dies ist wahrscheinlich sinnlos ... was ist, wenn der Benutzer drei Registerkarten geöffnet hat und Ihre Website "besucht", während er tatsächlich an den beiden anderen Registerkarten arbeitet? Möchten Sie das zählen?

Warum nicht einfach messen, was tatsächlich gemessen werden kann?

Das Sammeln und Werbung dieser Art von Zahlen entspricht vollständig mit dem Rest der Welt der Web -Metriken.

Außerdem - wenn jemand eine Webseite anspricht und dann beispielsweise einen zweiwöchigen Urlaub feiert, wie kann man sie am besten berücksichtigen?

Was Sie tun können, ist zu überprüfen, ob ein Benutzer ist auf der Seite aktiv Senden Sie dann eine AJAX -Anfrage alle x Sekunden an Ihren Server (wären 60 Sekunden in Ordnung?), Dass ein Benutzer aktiv oder nicht auf der Seite ist.

Anschließend können Sie die zweite Methode verwenden, die Sie erwähnt haben, um den Zeitunterschied zwischen zwei "aktiven" Zeitstempeln zu berechnen, die nicht durch mehr als ein oder zwei Intervalle getrennt sind. Das Hinzufügen dieser würde die Zeit, die der Benutzer auf Ihrer Website verbracht hat, verleiht.

Google Analytics enthält eine sehr leistungsstarke Ereignisprotokollierung/-verfolgung Mechanismus, den Sie anpassen und in die richtigen Messungen des Benutzerverhaltens tippen können - ich würde mich damit befassen

Eine sehr einfache Lösung besteht darin, einen versteckten Iframe zu verwenden, der eine PHP -Webseite regelmäßig lädt. Die geladene Webseite meldet die Startzeit (falls es nicht vorhanden ist) und die Stoppzeit. Wenn die Person die Seite verlässt, bleibt die Zeit, als die Person zum ersten Mal auf die Website kam, und das letzte Mal, dass sie dort war. In diesem Fall wird der Zeitstempel alle 3 Sekunden aktualisiert.

Ich verwende Dateien, um die Protokollinformationen zu halten. Der Dateiname, den ich verwende

Beispiel Iframe PHP -Code. Setzen Sie dies in 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);


?>

Das JavaScript, um den Iframe regelmäßig auf der Hauptwebseite neu zu laden .::

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

Der Iframe auf der Hauptwebseite sieht folgendermaßen aus:

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

Eine sehr einfache Möglichkeit, die Zeitstempeldateien anzuzeigen:

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

Sie erhalten eine Folge -Seite wie folgt:

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

Ich denke, die Client -Seite JavaScript Analytics ist die Lösung dafür.

Sie haben die Google Analitycs, Piwik, und es gibt auch Werbespottools in JS, die genau das tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top