Ergebnis 1 bis 7 von 7

Thema: User-Online-Anzeige (Fragen zu MySQL)

  1. #1

    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)?

  2. #2
    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.

  3. #3
    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
    @logischer Fehler: Ich glaube, stimmt so alles!

  4. #4
    Zitat Zitat von getöteter_ork
    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
    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)

  5. #5
    Okay, danke.

    Mir ist gerade aufgefallen, dass es laut phpmyadmin auch einen Feldtyp "timestamp" gibt.

  6. #6
    Zitat Zitat von getöteter_ork
    ...
    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".
    ...

  7. #7
    Zu dumm, dass PHP ihn nicht so lange unterstützt:
    Zitat Zitat von http://de2.php.net/date
    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"

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •