Erri: User-Online-Status anzeigen (Login-Script)

Hallo,

ich habe eine Frage (eher eine Verständnisfrage) bzgl. einem Session-Login-System und dem Anzeigen der User-Online-Status.

Die Vorgehensweise:
Wenn sich ein User einloggt, wird eine Session registriert und in die Userdatenbank wird des Weiteren für diesen User der „status = online“ geschrieben. Mit diesem Status möchte ich auf der Website anzeigen, welche User online sind.
Mein Problem ist nun: Vergisst der User den „Logout“, wird zwar die Session beendet, aber der Status des Users bleibt auf „online“, auch wenn er schon lange nicht mehr online ist.

Meine Idee war nun:
Mit einem Cronjob regelmäßig die Online-Status aller User auf „offline“ setzen.
Dabei ist wiederum das Problem, dass ich hierbei auch alle User erwische, welche derzeit wirklich online sind.
Nun wird wahrscheinlich jemand sagen, dass ich ja bei jedem Aufruf einer Seite den Status wieder neu setzen kann, oder dass ich das Cronjob-Script mit einem Timestamp versehe...

So richtig gefällt mir diese Lösung allerdings nicht.
Hat eventuell jemand von euch Ideen? Wie wird es zum Beispiel bei Foren gehandhabt?

Vielen Dank im Voraus
Erri

  1. Ahoi Erri,

    So richtig gefällt mir diese Lösung allerdings nicht.
    Hat eventuell jemand von euch Ideen? Wie wird es zum Beispiel bei Foren gehandhabt?

    also ich würde sagen das du in der DB sowohl status=online als auch
    letzte_aktion = timestamp speicherst, letzteres aktuallisierst du, ruft
    nun jmd "Welche User sind online" auf kannst du auch gleich noch mit
    angeben wann sie das letztemal etwas getan haben (evt. auch wenn du es
    mitspeicherst welche seite sie zuletzt aufgerufen haben) und wenn dies
    schon so und so lange her ist dann machst du status = offline ganz ohne
    cronjob. Aber ohne timestamp geht da wohl nix.

    MfG

    --
    Alle Angaben wie immer ohne Gewähr
    PPPS: ich trinke gerne ab und an mal eine tote Tante.
  2. Hallo Erri,

    Hat eventuell jemand von euch Ideen?

    Lies mal http://aktuell.de.selfhtml.org/artikel/programmiertechnik/useronline/index.htm.

    Grüße aus Nürnberg
    Tobias

  3. Hallo Erri,

    So richtig gefällt mir diese Lösung allerdings nicht.
    Hat eventuell jemand von euch Ideen? Wie wird es zum Beispiel bei Foren gehandhabt?

    Mal aus der Perspektive eines Windozers (Du hast ja nicht gesagt, welcher Sprachen Du Dich bedienst):
    Bei ASP.NET kann man die Sessionverwaltung direkt dem SQL-Server überlassen. Man setzt in einer Config-Datei (XML) einen sessionState mode und gibt die dsn des SQL-Servers an. (Ausserdem noch die Angaben möglich: Cookieless=true/false wg. disabled Javascript und Timeout.)

    Der SQL-Server verwaltet dann die offenen Sessions automatisch in einer Tabelle, inkl. Timeout der einzelnen Sessions. Einfache Abfrage auf die Tabelle und schon hat man die User online, natürlich inklusive der timeout-Kandidaten.

    So einfach kann es sein... ;o)

    Gruss
    LeKuchen