Domanda

Vorrei misurare quanto tempo un utente trascorre sul mio sito web.È necessario per un sito di comunità in cui puoi dire:"L'utente X ha trascorso qui 1397 minuti."

Dopo aver letto alcuni documenti a riguardo, so che non esiste un modo perfetto per raggiungere questo obiettivo.Non puoi misurare l'ora esatta.Ma sto cercando un approccio che dia una buona approssimazione.

Come hai potuto farlo?Le mie idee:1) Aggiunta di 30 secondi al contatore del tempo online su ogni visualizzazione di pagina.2) In ogni visualizzazione della pagina, salva il timestamp corrente.Nella visualizzazione successiva, aggiungi la differenza tra il timestamp salvato e quello corrente al contatore del tempo online.

Uso PHP e MySQL se questo è importante.

Spero che puoi aiutarmi.Grazie in anticipo!

È stato utile?

Soluzione

Due fattori stanno lavorando contro di te:

  1. Puoi raccogliere solo statistiche puntuali (visualizzazioni di pagina) e non esiste un modo ragionevole per rilevare cosa è successo tra quei punti;

  2. Anche in questo caso, conteresti il ​​tempo della finestra del browser, non il tempo dell'utente;gli utenti possono facilmente avere più schede aperte contemporaneamente su più istanze del browser.

Sospetto che la tua migliore approssimazione sia attribuire una quantità media di tempo di attenzione per clic e quindi moltiplicare.Ma potresti anche misurare i clic.

Altri suggerimenti

Questo è probabilmente inutile ... cosa succede se l'utente ha tre schede aperto e sta "visitando" il tuo sito mentre lavora effettivamente sulle altre due schede? Vuoi contarlo?

Perché non solo misurare ciò che effettivamente può essere misurato?: Referral, visualizzazioni di pagina, click-throughs, ecc.

Raccogliere e pubblicizzare questo tipo di numeri è completamente in linea con il resto del mondo delle metriche web.

Inoltre, se qualcuno dovesse allevare una pagina web e poi, diciamo, vai in vacanza di due settimane, come contattarla al meglio?

Quello che potresti fare è verificare se un utente lo è Attivo nella pagina e quindi inviare una richiesta AJAX al tuo server ogni x secondi (60 secondi andrebbero bene?) Che un utente è attivo o meno nella pagina.

Quindi è possibile utilizzare il secondo metodo che hai menzionato per calcolare la differenza di tempo tra due timestamp "attivi" che non sono separati da più di uno o due intervalli. L'aggiunta di questi darebbe il tempo trascorso dall'utente sul tuo sito.

Google Analytics include un molto potente Registrazione/tracciamento degli eventi meccanismo che puoi personalizzare e attingere a ottenere misurazioni davvero buone del comportamento dell'utente: lo esaminerei

Una soluzione molto semplice è utilizzare un IFRAME nascosto che carica periodicamente una pagina Web PHP. La pagina Web caricata registra l'ora di inizio (se non esiste) e il tempo di arresto. Quando la persona lascia la pagina ti rimane il tempo in cui la persona è arrivata per la prima volta sul sito e l'ultima volta che sono stati lì. In questo caso, il timestamp viene aggiornato ogni 3 secondi.

Uso i file per contenere le informazioni del registro. Il nome file che utilizzo è composto da iPaddress.htm di un anno di mese

Esempio di codice PHP iFrame. Metti questo in yourwebsite/youanalysiframecode.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);


?>

Il javascript ricaricare periodicamente iFrame nella pagina web principale.:

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

L'iframe nella pagina Web principale sembra così:

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

Un modo molto semplice per visualizzare i file di timestamp:

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

Ottieni una pagina dei risultati come questa:

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

Penso che il lato client JavaScript Analytics sia la soluzione per questo.

Hai i Google Analitycs, piwik, e ci sono anche strumenti commerciali in JS che fanno esattamente questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top