Koontz: Online-Offline-Status realisieren

Hi,

ich möchte auf meiner Website anzeigen, welche registrierten User gerade online sind. Eine erste Idee von mir ist das durchsuchen aller Session-Dateien im temporären Verzeichnis des Webservers. Das macht daher Sinn, da in den Session-Dateien die jeweiligen User-ID's gespeichert sind und man an diesen die eingelogten User identifizieren kann. Dieser Weg kommt mir jedoch recht umständlich vor. Ausserdem bräuchte ich eine Funktion, die Session-Dateien von anderen Dateien im temp-Verzeichnis unterscheiden kann.
Hier gibt es doch sicher Leute, die auf ihren Websites schon einen Offline-Online-Status realisiert haben. Bin für alle Ideen und Vorschläge dankbar.

Gruss,
Koontz

  1. Hi,

    hab das zwar schon gemacht aber keine ahnung mehr wie das geht - kennst du das phpBB-Board? da kann man das glaub ich ganz gut rauskopieren, wie auch viele andere nützliche sachen ;-)

    1. hab das zwar schon gemacht aber keine ahnung mehr wie das geht - kennst du das phpBB-Board? da kann man das glaub ich ganz gut rauskopieren, wie auch viele andere nützliche sachen ;-)

      glaub ich nicht, dass Du dies schon gelöst hast, da es nicht lösbar ist.
      die einzige möglichkeit besteht, die user festzuhalten, die innerhalb einer best. zeit online sind, allerdings nicht die, die aktuell online sind ...

      mfG,
         Markus.

      1. glaub ich nicht, dass Du dies schon gelöst hast, da es nicht lösbar ist.
        die einzige möglichkeit besteht, die user festzuhalten, die innerhalb einer best. zeit online sind, allerdings nicht die, die aktuell online sind ...

        stimmt, das ist aber immer so, da du ja nicht alle 10sek checken kannst wieviel user noch online sind. also jenachdem wie oft du das checken lässt, hast du auch immer user dabei die schon 30 sek oder eine andere in dem Zeitintervall liegende zeit offline sind. (lässt sich denk ich mal nicht vermeiden)

        Gruß

        Ralf

        1. Vielen Dank für die Antworten. Ich hab mich auch schon gefragt wie das zuverlässig gehen soll. Aber das ganze ist dann doch ziemlich ernüchternd.

          Gruss,
          Koontz

    2. Hi,

      ich hatte mir mal ne mysql tabelle angelegt.

      user_id, lastlog, status

      beim einloggen wurde jedes mal das feld "lastlog" geupdatet (uhrzeit) und der status auf 1 gesetzt.
      jedes mal, wenn dann der user eine seite aufrief, hat er auch eine funktion aufgerufen, die sein lostlog wieder updatete.
      desweiteren hab ich dann im memberbereich die daten auslesen lassen. alles was sich vor 15minuten gelogt hat wurde wieder auf 0 gesetzt (offline). darüber galt als online.

      gruß.
      roger.

  2. Hi,

    Hier gibt es doch sicher Leute, die auf ihren Websites schon einen Offline-Online-Status realisiert haben. Bin für alle Ideen und Vorschläge dankbar.

    nein, denn es ist theoretisch+praktisch nicht zuverlässig lösbar
    Wie willst Du rauskriegen, ob die der Browser schon wieder zu ist, denn die session, wird je nach Lebensdauer weiterbestehen. Du kannst zwar angeben, wer sich gerade eingeloggt hat, aber wenn der User geht, hast Du keine Chance dies zu bemerken.
    Diese Diskussion wurde schon häufiger durchgeführt, schau mal im Archiv nach online-offline-status

    ciao
    romy

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
    Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
    Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
    1. Moin Moin !

      HTTP ist per Definition ein "stateless" Protokoll, sprich: garantiert online ist Dein Besucher nur in dem kurzen Moment, in dem eine TCP-Connection zum Webserver besteht, um eine Resource anzufordern und auszuliefern. Danach kannst Du nicht einmal mehr raten, ob der Besucher noch online ist.

      Stell Dir folgendes Script vor:

      #!/bin/sh

      Starte Dial-Up-Verbingung

      ppp-manager dial

      Eine Resource anfordern und speichern

      lynx -dump http://www.example.com/php/foobar.php > somefile.html

      Beende Dial-Up-Verbindung

      ppp-manager hangup

      Übersetzt nach Windows:
      @echo off
      ppp-manager dial
      lynx -dump http://www.example.com/php/foobar.php > somefile.html
      ppp-manager hangup

      (ppp-manager ist irgendein Programm, daß die PPP-Verbindung steuert.)

      Bei einer DSL-Verbindung ist das Script bestenfalls in weniger als einer Sekunde fertig. Beim Server kommt dabei exakt eine TCP-Verbindung für den Webserver an, mit einem GET-Request für /php/foobar.php, die der Webserver irgendwie beantwortet. Danach wird die Verbindung beendet und Du hast absolut keine Chance herauszufinden, ob der Client "noch da" ist, denn nach dem Auflegen kann die freigegebene IP-Adresse des Clients sofort für den nächsten Surfer vergeben werden. D.h. selbst wenn ein Ping funktionieren würde, kannst Du nicht sicher sein, ob die Antwort auf den Ping von demjenigen kommt, der den Request abgeschickt hat.

      Einwände? Das Script ist unrealistisch?

      Nicht unbedingt. Man kann so z.B. prima nach Updates für Virenscanner suchen. Oder man benutzt einen Dialing Deamon, der die Verbindung nur bei echtem Bedarf für einen kurzen Moment herstellt, z.B. weil man per Handy arbeiten muß.

      V.92-Modems haben übrigens eine nette Funktion, die es erlaubt, die Verbindung zur Gegenstelle beim Provider zu "parken", dabei wird zwar die Telefonleitung aufgelegt (um z.B. zu Telefonieren), aber bei der nächsten Einwahl erkennen sich Modem und Gegenstelle wieder und sparen sich das langwirige Aushandeln der Verbindungsparameter, d.h. die Verbindung ist quasi sofort wieder da. Auf höheren Protokollebenen, z.B. IP, könnte das aber bedeuten, daß eine neue Adresse vergeben wird.

      Alexander

      --
      Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
      Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
      1. Sorry, die Antwort galt natürlich Koontz.

        Posten müßte man können. ;-)

        Alexander

        --
        Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
        Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
  3. Hallo Koontz,

    ich möchte auf meiner Website anzeigen, welche registrierten User gerade online sind.

    Vergiss es. Unter [pref:t=47026&m=256713] habe ich dargelegt, warum es nicht geht. Zusammen mit Alexanders Posting dürfte das eine ziemlich umfangreiche Sammlung an Informationen zum unlösbaren Problem Online/Offline vs. HTTP geben.

    Viele Grüße,
    Christian