2009-06-10 13 views
1

Hallo Leute Ich habe eine einfache Mitgliedschaft basierte Website, wo Benutzer einloggen und haben ihre eigenen Profile. Ich möchte zu jedem beliebigen Zeitpunkt wissen, wie viele Benutzer bzw. welche Benutzer gerade auf meiner Website angemeldet sind.Wie finde ich die Gesamtzahl der erstellten Sitzungen, d. H. Anzahl der eingeloggten Benutzer?

Es ist ein einfaches Mitgliedschaftssystem in PHP. Eine Möglichkeit, eine Tabelle in einer db zu erstellen und dort Anmeldedaten und Sitzungsdaten zu speichern, kann auch auf andere Weise erfolgen, d. H. Auf jeden Fall um herauszufinden, wie viele Sitzungen gestartet wurden und alle eindeutigen Benutzer online sind.

+0

Duplizieren! http://stackoverflow.com/questions/679657/find-number-of-open-sessions – Evert

+0

@Magnus - es geht gut haben es fast eingewickelt :) @Evert - oops hat das nicht bemerkt, danke um es auf den Punkt zu bringen ... – Ali

Antwort

6

Der beste Weg, dies zu tun, ist die Aufnahme der lastActivityTime für jeden Benutzer. Wenn sie auf eine Seite zugreifen, protokollieren Sie die Zeit in ihrem Datenbankdatensatz. Führen Sie anschließend eine einfache Abfrage aus, um alle Datensätze mit lastActivityTime weniger als 5 Minuten von Current Time zu zählen.

Anstatt zu fragen, "wie viele Benutzer angemeldet sind", fragen Sie "wie viele Benutzer in letzter Zeit aktiv waren."

+0

Entschuldigung für die lange Wartezeit, ich habe mich entschieden, mit dieser Idee zu gehen, macht umso mehr Sinn und ist einfach zu implementieren und genau genug. Vielen Dank! – Ali

0

Eine Methode, die ich verwendet habe, ist einen benutzerdefinierten Session-Handler zu schreiben - es gibt viele Beispiele auf php.net. Sobald die Sitzungsdaten in SQL sind, können Sie noch viel mehr tun.

2

Das Hauptproblem mit dem gesamten 'Überwachen aktiver Sitzungen' Problem ist, dass Sie (der Server) nicht unbedingt die volle Kontrolle über die Sitzung haben. Benutzer-Browser können die Sitzungen zu einem bestimmten Zeitpunkt ablaufen lassen, sodass Sie zu keinem Zeitpunkt aktive Benutzer garantieren können.

Wenn es äußerst wichtig ist, die aktuellen Benutzer zu kennen, dann fügen Sie ihrer Benutzertabelle eine Spalte hinzu, die einen Zeitstempel angibt, und aktualisieren dieses Feld jedes Mal, wenn sie eine Seite laden. Wenn diese Spalte weniger als eine Minute veraltet ist, können sie als aktiv betrachtet werden.

Eine zusätzliche Sache, die Sie tun können (viel von Online-Chatrooms verwendet, um eine aktive "Chat" -Liste zu verwalten), ist eine Seite in einem bestimmten Intervall abzufragen (mit AJAX), und auch wenn sie nicht aktualisieren die Seite, auf der Sie noch wissen, dass sie da ist. Wenn eine Ajax-Anforderung nicht in dem angegebenen Intervall eintrifft, hat der Benutzer navigiert oder den Browser geschlossen.