Online-Offline-Status realisieren
Koontz
- php
0 Ralf0 romy0 Christian Seiler
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
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 ;-)
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.
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
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
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.
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
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
ppp-manager dial
lynx -dump http://www.example.com/php/foobar.php > somefile.html
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
Sorry, die Antwort galt natürlich Koontz.
Posten müßte man können. ;-)
Alexander
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