User Online Script

Sandro18

Erfahrenes Mitglied
Hallo zusammen,

ich hätte da mal eine Frage, ich habe eine Seite, und will dort nun ein UserOnlineScript verwirklichen.

Ich habe es bisher so angestellt, dass ich auf die "memberseite" eine Eintragung in die DB vorgenommen habe, also jedes mal wenn man als User auf diese Seite einloggt wird in die DB eingetragen "Online" sowie auch die genaue Uhrzeit bei dem User um den es sich handelt.

Dann habe ich auf die Index , dort wo die User noch nicht eingeloggt sind, einen weiteren DB Eintrag vorgenommen. Dieser sagt wenn die Uhrzeit kleiner ist als die jetzige Uhrzeit, dann setze Status auf "Offline"

Klappt alles wunderbar, aber ihr könnt euch sicherlich schon denken wo dasProblem liegt. Es kommt nicht jede min. ein User auf meine Seite, der die index.php aufrufen würde die dann die DB Einträge checkt.

Ich habe mir gedacht das ich die Seite einfach nach einer bestimmten Zeit refreshe aber das ist sicherlich auch aufwendig für den Anwender.

Habt ihr vielleicht eine bessere Idee?
Ich hoffe ihr habt alles verstanden ;)

Gruß Sandro
 
Mein Vorschlag: Notiere jede Aktion deiner registrierten Benutzer, indem du den Zeitpunkt speicherst. Anhand dessen lässt sich auch ürberprüfen, wie viele registrierte Benutzer innerhalb einer bestimmten Zeitspanne aktiv waren.
 
Notiere jede Aktion deiner registrierten Benutzer, indem du den Zeitpunkt speicherst

Hab ich, jeder User der sich einloggt wird in die DB eingetragen
1x das genaue Datum mit Uhrzeit
1x status: online

Anhand dessen kann ich ja auch auslesen wer Online ist und wer nicht.
Aber ich muss diesen Status doch irgendwie aktualisieren. So dass wenn jemand offline geht der Status "offline" eingetragen wird.

[edit] Die Usernamen werden im Script auch ausgelesen, über die Sessions, so dass es sich nicht nur um einen UserCounter handelt ;)

Danke für die schnelle Antwort!

Gruß Sandro
 
Nein, ich meine wirklich jede Aktion. So kannst du auch beurteilen, wann ein Benutzer nicht mehr „online“ ist, beispielsweise etwa nach fünf Minuten ohne „Lebenszeichen“.
 
Bei jedem Aufruf einer Seite vom User aktualisierst du den alten Timestamp (der letzen Aktikon) durch den aktuellen Timestamp in der Datenbank.
Außerdem überprüfst du immer, ob irgendein Timestamp in der Datenbank schon länger als z.B. 5 Minuten her ist. Wenn ja -> löschen -> User offline.
 
Danke Suye, mein Problem ist nur das ich mich noch kaum mit der Funktion time_stamp befasst habe.

@Gumbo: Das Speichern der Aktionen
 
Timestamp ist keine Funktion, sondern das ist die Unix-Zeit, die angibt, wieviele Sekunden seit dem 01.01.1970 00:00:00 GMT vergangen sind. Das soll dich jetzt aber nicht weiter interessieren. Sieh ihn einfach als eine Zeiteinheit, mit der man problemlos arbeiten kann.
Die passende Funktion dazu ist time(). Sie liefert den aktuellen Timestamp.
 
Also gut. Ich denke mal, dass du mit Sessions arbeitest und alles über ein zentralen Skript läuft (beispielsweise index.php).
Demzufolge überprüfst du am Anfang des Skriptes, ob bereits ein Eintrag zu der Session-ID existiert. Ist dies der Fall, wird der Zeitpunkt aktualisiert, sonst wird ein neuer Datensatz angefügt. Als Datentyp des Zeitpunktes hast du mehrere Möglichkeiten: Entweder du arbeitest mit dem Unix-Zeitstempel (abrufbar über die PHP-Funktion time()) oder arbeitest mit den MySQL-eigenen Datums- und Zeit-Typen.

Wenn du nun wissen möchtest, welche Benutzer in den letzten X Sekunden/Minuten aktiv war, kannst du ganz einfach eine Abfrage dementsprechend zusammenbasteln.
 
Zurück