Ich möchte in der Lage sein, die Anzahl der Sekunden, die eine Person auf meiner Website ist, auf einfachste Weise aufzuzeichnen. Sie benötigen keine Google Analytics oder andere Quellen von Drittanbietern.

Das PHP-Skript würde eine Verbindung zu MySQL herstellen und die relevanten Werte aktualisieren.

Ich habe ein Skript online gefunden, aber es scheint nicht zu funktionieren:


<script  src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"> </script>
<script>
   $(document).ready(function()
   {
       var refreshId = setInterval(function()
          $.load('timeonpage.php?wzx=<?php echo $t; ?>&ip=<?php echo $ip; ?>');
       }, 5000);
   );
</script>

Danke für jede Hilfe!

2
themike 26 Nov. 2012 im 23:29

4 Antworten

Beste Antwort

Es liegt ein Syntaxfehler vor, bei dem eine Öffnung für die Funktion setInterval fehlt und die Methode .ready geschlossen wird

<script  src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"> </script>
<script>
$(document).ready(function(){
    var refreshId = setInterval(function(){ //SYNTAX ERROR HERE
        $.load('timeonpage.php?wzx=<?php echo $t; ?>&ip=<?php echo $ip; ?>');
    }, 5000);
}); // SYNTAX ERROR HERE
</script>

Außerdem würde ich die Verwendung der Methode $.get empfehlen, da .load in JQuery normalerweise zum Laden von HTML in einen bestimmten Container gedacht ist:

var refreshId = setInterval(function(){
    $.get('timeonpage.php',{wzx:<?php echo $t?>,ip:<?php echo $ip?>});
},5000);
3
Samuel Cook 26 Nov. 2012 im 19:36
<script  src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"> </script>
<script>
$(document).ready(function()
{
 var refreshId = setInterval(function(){ //ANOTHER ERROR
    $.load('timeonpage.php?wzx=<?php echo $t; ?>&ip=<?php echo $ip; ?>');
 }, 5000);
}); //ERROR ON THIS LINE
</script>

Nun, Sie vermissen ein '}' beim Schließen des Dokuments. Versuchen Sie das, könnte etwas so Einfaches sein, melden Sie sich zurück, wenn es nicht ist und sehen Sie es sich noch einmal an :)

Außerdem: Wenn Sie einen Drittanbieter-Service in Betracht ziehen, schauen Sie sich GoSquared an, eine wirklich erstaunliche Website dort :)

Edit: Ein weiterer Fehler in der setInterval-Zeile :)

2
ConnorRoberts 26 Nov. 2012 im 19:47

Mit Ihrer aktuellen Methode wird ein Benutzer möglicherweise für alle 86.400 Sekunden eines Tages als online gezählt, wenn er nur sein Browserfenster geöffnet lässt.

Persönlich ist meine Site so eingerichtet, dass jedes Mal, wenn ein Benutzer tatsächlich eine Seite lädt, die Zeit für das Laden der letzten Seite aktualisiert wird. Anschließend wird jede Minute ein cron - Skript ausgeführt, um festzustellen, welche Benutzer in letzter Minute eine Seite geladen haben. Wenn ich diese hochzähle, kann ich ziemlich gut feststellen, wie viel Zeit jeder Benutzer online verbracht hat.

Darüber hinaus würde dies zu einer weitaus geringeren Belastung Ihres Servers führen - Ihre Lösung würde ihn wahrscheinlich töten, wenn Sie mehr als 50 Benutzer auf Ihrer Site hätten.

0
Niet the Dark Absol 26 Nov. 2012 im 19:38

Es wäre wahrscheinlich viel effizienter, onLoad ein Ajax-Skript aufzurufen, das die Seite und alle anderen gewünschten Daten in der Datenbank speichert und dann eine eindeutige ID zurückgibt, die Sie in einer Variablen speichern. Beim Ereignis onbeforeunload können Sie dann die Datenbank mit der eindeutigen ID erneut aufrufen. Nur meine zwei Cent ...

0
Taff 26 Nov. 2012 im 19:45