Archiv verlassen und diese Seite im Standarddesign anzeigen : User-Online-Anzeige (Fragen zu MySQL)
Moin,
ich versuche gerade, für die Website eines Freundes von mir eine "Wer ist online?"-Liste zu scripten. Eine grundsätzliche Vorgehensweise habe ich mir schon überlegt:
Ich speichere bei jedem Seitenaufruf die IP des Besuchers und die aktuelle Zeit in eine MySQL-Tabelle. Außerdem werden Einträge entfernt, wenn der letzte Aufruf länger als 10 Minuten her ist. Wenn sich jemand einloggt, wird zusätzlich noch sein Name abgespeichert.
Jetzt meine Fragen:
Welche MySQL-Feldtypen brauche ich für die IP und die Zeit?
Seht irgendwelche gravierenden logischen Fehler im Verfahren (außer Fehler beim Aufruf von gelicher IP)?
Für die IP solltest du mit einem Textfeld keine Probleme haben ... und für die Zeit halt je nachdem, für Timestamp Timestamp oder auch Textfeld, für Datum + Uhrzeit halt Datetime ... wobei das bei einem Timestamp sicherlich einfacher mit dem Vergleich ist, obs jetzt schon 10 Minuten her ist.
dead_orc
11.02.2005, 15:03
Auf jeden Fall:
IP -> VARCHAR(15)
Time -> INT(10)
Eine "normale" (mit Punkten angegebene) IP ist 15 Zeichen lang. Da die Punkte als Zeichen gelten, muss es VARCHAR sein.
Ein UNIX-Timestamp ist immer 10 Zeichen lang und besteht grundsätzlich nur aus Zahlen.
Ganz einfach :D
@logischer Fehler: Ich glaube, stimmt so alles!
Auf jeden Fall:
IP -> VARCHAR(15)
Time -> INT(10)
Eine "normale" (mit Punkten angegebene) IP ist 15 Zeichen lang. Da die Punkte als Zeichen gelten, muss es VARCHAR sein.
Ein UNIX-Timestamp ist immer 10 Zeichen lang und besteht grundsätzlich nur aus Zahlen.
Ganz einfach :D
Besser wäre Charactar als varchar, da Character schneller sind und sich die größenunterschiede bei der Länge der IP in grenzen halten.
Schlüssel würde ich in dieser Tabelle keine Angeben, falls du unbedingt willst, dann aber einen zusammengesetzten aus IP und timestamp (timestamp sollte Sekundengenau sein, da sonst die gefahr besteht dass du einen identischen Schlüssel kriegst)
Okay, danke.
Mir ist gerade aufgefallen, dass es laut phpmyadmin auch einen Feldtyp "timestamp" gibt.
Chocwise
11.02.2005, 17:52
...
Ein UNIX-Timestamp ist immer 10 Zeichen lang und besteht grundsätzlich nur aus Zahlen. ..
Fahalsch! In Knapp 282 Jahren ist er 11-stellig.
Also: Nix "immer".:D:p
...
;)
dead_orc
11.02.2005, 18:07
Zu dumm, dass PHP ihn nicht so lange unterstützt:
Anmerkung: Der gültige Bereich eines Timestamp liegt typischerweise zwischen Fri, 13 Dec 1901 20:45:54 GMT und Tue, 19 Jan 2038 03:14:07 GMT. (Das entspricht den minimalen und maximalen Werten für einen vorzeichenbehafteten 32-Bit Integer). Unter Windows-Betriebssytemen ist dieser Bereich auf 01-01-1970 bis 19-01-2038 beschränkt.
Aber OK, ich hab gesagt "UNIX-Timestamp" und nicht "UNIX-Timestamp, der von PHP unterstützt wird" :p
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.