2009-11-20 11 views
7

Ich habe derzeit eine Pylons-Anwendung ausgeführt mit einer grundlegenden Benutzer-System-Setup. Ich möchte versuchen, ein Widget zu erstellen, das die Benutzer anzeigt, die derzeit auf der Website angemeldet sind. Ich bin mir nicht sicher, wie ich damit umgehen sollte; Ich bin mir nicht sicher, ob Pylons-Sessions aktiv sind, hängt davon ab, ob ein Benutzer tatsächlich auf der Web-Appsseite ist oder nicht, also suche ich nach Ideen, wie ich mit dem arbeiten kann, was ich möglicherweise bereits getan habe.Wer ist online in Pylons

Antwort

11

Es gibt mehrere Möglichkeiten, wie Sie es tun können, je nachdem, wie genau Sie sein möchten.

Die einfachste und erste Möglichkeit, memecached oder einen persistenten Speicher zu verwenden, um Benutzer und das letzte Mal, wenn sie eine Seite treffen, zu verfolgen. Stellen Sie sich vor, dass jemand, der eine Seite innerhalb von X Minuten erreicht hat, "eingeloggt" ist, solange er nicht "ausgeloggt" ist. Wenn Sie die Datenbank nur bei jedem Seitenaufruf aktualisieren oder memcached (oder eine schnellere Datenbank) aktualisieren, müssen Sie sie innerhalb der letzten Minute nach Sitzungen abfragen.

Zweitens, aber intensiver auf Ihrem Server, setzen Sie Javascript auf jeder Seite, die alle XX Sekunden/Minuten eine spezielle URL auf Ihrer Website trifft, um anzuzeigen, dass der Benutzer angemeldet ist. Notieren Sie das und verwenden Sie diese Anzahl. Dies hat den Vorteil, dass Ihr JS den Counter auf der Seite in Echtzeit aktuell halten kann. Obwohl das Abrufen auf Ihrem Server teuer sein könnte. Verwenden Sie ein Comet-Stilsystem, sagen wir mit Orbited, und solange der Benutzer sich auf einer Seite befindet, die mit dem Server verbunden ist, ist die Verbindung offen und Sie können verfolgen, wie viele offene Sitzungen Sie haben. Orbited kann ungefähr 10k offene Verbindungen auf einmal pro Server handhaben, glaube ich.

Ich würde den ersten Typ empfehlen, da es den wenigsten zusätzlichen Overhead/Setup erfordert und den ziemlich häufigen Fall behandelt. Wenn Sie einen Echtzeit-Chat verwenden, bei dem Sie mehr Genauigkeit benötigen, sollten Sie einen der anderen beiden berücksichtigen.

+0

Wie wäre es, Beaker's Store selbst zu lesen? – Joril