Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

hol dir die hoechste ID von beiden und addiere sie(wenn die IDs ohne lücken sind) sonst Mit Select * alle user raus holen und inner schleife gucken wie viel du bekommen hast und mit der anderen table auch und dann addieren.

mfg

Geschrieben (bearbeitet)

Ich habe so etwas mal so gelöst, dass bei jedem Seitenaufruf bzw. alle 15 Sek. einem Ajax-Request die aktuelle Zeit in Verbindung mit dem aktuellen User gesetzt wird. Jetzt kann man ganz einfach alle User aus dieser Tabelle Abfragen, bei denen der Zeitpunkt <= 15 Sekunden in der Vergangenheit liegt.

Setzt zwar Javascript für den Ajax-Request voraus, aber das hat ja mittlerweile fast jeder an und alternativ könnte man das auch mit einem IFrame erledigen.

Das ist die einzige Möglichkeit, verlässlich die aktuellen User anzuzeigen.

EDIT: Ein Kumpel hat mir eben noch eine andere Möglichkeit gezeigt - im Prinzip aber nur eine andere Variante: Und zwar speichert er alle BenutzerIDs von den Usern, die online sind im memcache mit einer Verfallszeit von ~3min. Jetzt kann man alle User auslesen, die noch online sind, da alle anderen durch das Timeout aus dem Memcache gefallen sind.

Bearbeitet von xm22
Geschrieben
@Shadowman: Das setzt voraus, dass in beiden Tabellen nur aktuell eingeloggte User habe und das wäre dann wohl sehr seltsam, warum man zwei Tabellen mit gleichen Inhalt hat

Phil

Davon, dass die Benutzer aufgeführt werden sollen, die eingeloggt sind ist nicht beschrieben.

Mit der Abfrage gehe ich nicht davon aus, dass die gleichen Inhalte in den 2 Tabellen stehen, sondern genau unterschiedliche. Dies würde zum Beispiel auftreten, wenn man ein Forum und eine Contentpage hat, auf denen eine getrennte Registration möglich ist.

Indikatoren hierfür waren die Namen:

user_f (User Forum)

user_p (User Page)

Geschrieben

wenn man jetzt allerdings online user auch anzeigen moechte, koennte man dann nicht einfach ein feld machen loggedIn in der Datenbank und dann die abfrage von Shadowman einfach ein bisschen erweitern :


$num1 = mysql_fetch_array(mysql_query("SELECT Count(*) FROM user_p WHERE loggedIn = 'true'"));
$num2 = mysql_fetch_array(mysql_query("SELECT Count(*) FROM user_f WHERE loggedIn = 'true'"));
[/PHP]

oder wären da sessions die bessere wahl?

bwz. wo liegen da die vor und nachteile zwischen den verschiedenen Varianten ?

mache erst seid nen paar tagen php und da ich sowas auch gerne mal realisieren moechte wäre das gut zu wissen, nicht das ich gleich den letzten müll programmiere der überhaupt nix taugt :eek

p.s. hab gedacht das passt hier ganz gut rein, ist ja villt auch für andere von bedeutung^^

Geschrieben (bearbeitet)

das mit nur einem Feld in der Usertable zu realisieren ist nicht sinnvoll, da die Aktualisierung nicht 100% ist.

In diesem Fall würde ich eine zusätzliche Tabelle anlegen, in der jeder Benutzer der eingeloggt ist seine IP rein schreibt (automatisch beim login des Benutzers) mit einem Timestamp von {now}+15 min.

Dann würde ich auf einer globalen Seite die dauerhaft verwendet wird, oder in jede page included wird automatisch alle aus dieser Tabelle löschen lassen, deren Timestamp in der Tabelle kleiner {now} ist. Somit bleiben Benutzer 15 Minuten nach verlassen der Seite noch online, werden dann aber definitiv ausgeloggt.

Bei jeder aktion des Benutzers sollte dann natürlich der Timestamp wieder auf {now}+15 min aktualisiert werden anhand der IP.

Dies lässt sich dann auch zu einer Statistik erweitern

Bearbeitet von Shadowman

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...