Archiv verlassen und diese Seite im Standarddesign anzeigen : Feststellen wieviele User in den Letzten 15minuten ON waren;wie geht das ?
Hi ,
Also ich Zerbreche mir noch den Kopf wie ich das lösen soll zu erst hatte ich ne Javascript lösung die alle Parminuten zu einem Verwaltungserver sagt das Person X auf seite Y ist
usw. Jedich ist das sehr vielaufwand und dann müsste ich einen Verwaltungserver einrichten
Kann mir mal jemand erkähren wie diese Technik per PHP geht ?
(Kein Code Posten !)
Es geht mir nur um die Erklährung !!
MFG
Dadie
Das stelle ich mir nicht so schwierig vor (ich hab' keine Ahnung^^).
Du musst doch im Prinzip nur eine Liste haben, welche User online sind und wann sie das letzte mal eine Seite aufgerufen haben. Sobald sie eine Seite aufrufen, werden sie in die Liste eingetragen bzw. wird ihr Eintrag aktualisiert. Wenn der letzte Seitenaufruf eines Users mehr als 15 Minuten her ist, wird er aus der Liste gelöscht. Leute, die nicht in deinem Forum registriert sind, solltest du per IP in die Liste eintragen.
Kermit.d
30.12.2004, 21:04
Den genauen Code will ich jetzt nicht schreiben, aber ich versuchs mal zu erläutern.
Du legst ne Datenbanktabelle an mit folgenden Spalten:
IP | Time
Dort kannst du dann wenn ein User deine Seite betritt seine IP und seinen aktuellen Timestamp rein schreiben. Gleichzeitig führst du ein script aus, dass alle Zeilen aus dieser Tabelle löschst, wo der timestamp älter als 15 min ist. Somit stellst du sicher, das da nur die Daten von usern drin liegen, die innerhalb von 15 min auf deiner Seite waren. Durch die IP stellst du dabei sicher, dass keiner doppelt gezählt wird.
FÜr deinen Counter kannst du jetzt einfach die Zahl der Zeilen in dieser tabelle lesen.
Erweiternd kannst du noch ne SPalte mit User ID anlegen, falls du ein Usersystem hast. Dann weißt du sogar wer alles online war.
Also ich hatte jetzt vor per date die uhrzeit+minuten auszugeben und per For
ein bsichen zu rechnen
Nur interesiert mich jetzt dieser Timestamp
Was ist das genau ?
und wie kann man es einsätzen ?
Kermit.d
30.12.2004, 21:37
Die funktion time(); liefert dir den aktuellen timestamp in "Sekunden seit dem 1.1.1970" wieder. Ist also eine fortlaufende Zahl. Diesen timestamp kannst du jederzeit mit der date(); funktion wieder umwandeln:
$time = time();
echo date("d.m.Y", $time);
Eine überprfüng könnte also so aussehen:
$time = time();
$deltime = $time - 900; // 900 sec sind 15 min
mysql_query("delete from useronline where timestamp < $deltime", $db);
dead_orc
31.12.2004, 08:03
Schön, das du an dem Prob auch verzweifelst. Ich hab mir mal das (http://tut.php-q.net/online.html) durchgelesen, vielleicht hilft es dir ja auch. Du solltest das Limit nicht zu hoch setzen (ich denke 15 Minuten sind zu viel). Vielleicht baust du auch 2 neue Spalten in deine User-Tabelle ein, was allerdings zu Folge hätte, das Gäste nicht berücksichtigt werden!
@kermit: OMG! Ich hoffe, du schreibst deine MySQL-Befehle nicht wirklich so! Alles klein, alles in einer Zeile und ohne ` um die Namen!
Kermit.d
31.12.2004, 09:59
Da $deltime nichts anderes als nen nummerischen wert enthalten kann, sind die ' überflüssig.
Aber wenn ich diesen Befehl da sauber schreibn würde, würde das so aussehen:
mysql_query("delete from useronline
where timestamp < $deltime", $db);
Und ich schreib in meinen scripten grundsätzlich alles klein, was nicht zwingend groß sein muss, da es in keinster weiße die Lauffähigkeit eines scripts beeinflusst.
Die Namen der Tabellen müssen ebenfalls nicht in ' eingeschlossen werden. Kann man machen, aber vollkommen überflüssig, solange man diese nicht über Variablen anspricht.
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.