Hallo Chris,
ich möchte für meine Website (Portal, Eigenentwicklung) eine "Wer ist Online"-Liste erstellen. Allerdings ist mir das Prinzip nicht ganz klar...
Zuerst einmal: Lies: http://aktuell.de.selfhtml.org/artikel/programmiertechnik/useronline/
Dort wird das ganze zwar mit Textdateien gemacht, aber es erläutert ein paar grundsätzliche Konzepte, was vielleicht ganz hilfreich ist.
Ich könnte bei jedem eingeloggten User eine Info in einer zusätzlichen Tabelle hinterlegen. In dieser werden alle eingeloggten User eingetragen, zusammen mit dem TimeStamp.
Und bei jedem Seitenzugriff wird der TimeStamp erneuert.
Wenn Du eine DB verwendest und keine Textdateien, wie in meinem Artikel der Einfachheit halber vorgeschlagen, dann ja.
Die Frage ist, wie kann ich die User wieder automatisch rauslöschen lassen?
Du könntest einfach alle Einträge, die älter sind als X automatisch entfernen, d.h. (in MySQL, andere DBMS ähnlich):
DELETE FROM tabelle WHERE zeitpunkt < DATE_SUB (NOW(), INTERVAL 15 MINUTE)
In dem Zusammenhang wäre das "Neu-Einfügen" in die DB am einfachsten über REPLACE INTO (wenn Du wie gesagt MySQL verwendest) zu bewerkstelligen:
REPLACE INTO tabelle (user, zeitpunkt) VALUES ('foo', NOW())
Das ist dann entweder ein UPDATE oder ein INSERT je nachdem ob schon ein Datensatz existiert oder nicht (die Spalte user
muss dann natürlich PRIMARY KEY sein).
Bei jedem Aufruf der Website die entsprechende Tabelle prüfen, ob die User noch da sind? (Also den letzten TimeStamp überprüfen) Das würde ja Datenbank-Zugriffe ohne Ende bedeuten...
Nein, das würde genau einen Datenbankzugriff bedeuten. :-)
oder einen Cronjob dafür einrichten, der alle 5 Minuten oder so ein "Bereinigungs-Script" aufruft?
Wäre in meinen Augen für so eine Aufgabe kompletter Overkill.
Viele Grüße,
Christian