Hallo zusammen,
ich bin auf der Suche nach einer Möglichkeit die Benutzer, die aktuell an django angemeldet bzw. aktiv sind, zu zählen. Mit angemeldet meine ich aber nicht die Gesamtanzahl an Benutzern, sondern nur die, die gerade mit der Website "arbeiten" und angemeldet sind.
Ich möchte das ganze verwenden um anzugeben, wieviele Benutzer im Moment gerade online sind.
Was mir auf die schnelle einfällt wäre, dass beim Anmeldevorgang eine Nutzerzahl in der DB um eins erhöht wird und beim ausloggen um eins vermindert. Aber das ist in meinen Augen ein eher unschöner weg.
Vielleicht wisst ihr ja was...
Vielen Dank schon mal im vorraus.
Freundliche Grüße
(django) Anzahl der aktiven Benutzer zählen
Du könntest die Anzahl der Session-Objekte, die noch nicht abgelaufen sind, zählen. Ungefähr so:
Stefan
Code: Alles auswählen
from django.contrib.sessions.models import Session
Session.objects.filter(expire_date__gt=...).count()
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Formal gesehen geht sowas nicht, weil HTTP verbindungslos ist und eine Webseite somit mehr oder weniger 0 User hat, die online sind. Somit musst du zu anderen Tricks greifen.
Persönlich würde ich für so etwas eine Middleware benutzen, die eine Tabelle hat mit Usern und die datetime ihres letzten Zugriffs auf die Applikation. Wenn die Datetime älter als 15 Minuten ist, wird der User aus der Tabelle gelöscht (also "offline") ansonsten wird bei jedem Request vom User die Datetime auf die aktuelle Zeit gesetzt.
Persönlich würde ich für so etwas eine Middleware benutzen, die eine Tabelle hat mit Usern und die datetime ihres letzten Zugriffs auf die Applikation. Wenn die Datetime älter als 15 Minuten ist, wird der User aus der Tabelle gelöscht (also "offline") ansonsten wird bei jedem Request vom User die Datetime auf die aktuelle Zeit gesetzt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma hat geschrieben:Du könntest die Anzahl der Session-Objekte, die noch nicht abgelaufen sind, zählen. Ungefähr so:StefanCode: Alles auswählen
from django.contrib.sessions.models import Session Session.objects.filter(expire_date__gt=...).count()
An das mit den Sessions habe ich auch schon gedacht, es scheint mir der etwas "elegantere" Weg zu sein.
Stimmt, wenn man es wörtlich nimmt geht sowas eigentlich nicht.Leonidas hat geschrieben: Formal gesehen geht sowas nicht, weil HTTP verbindungslos ist und eine Webseite somit mehr oder weniger 0 User hat, die online sind. Somit musst du zu anderen Tricks greifen.
Aber es geht mir eher darum die "Standarduser" zufrieden zu stellen.
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Naja aber ich kann 234235 verschiedene Sessions eröffnen und somit das Ergebnis fälschen.
Ich habe hier einen weiteren Ansatz gefunden...
http://www.djangosnippets.org/snippets/947/
Ist zwar nicht genau, aber lässt zumindest einen schluss zu, wieviele Leute vor 1 h eingeloggt waren. Länger dürfte die Nutzungsphase einer Webapplikation, auch wenn diese kommerziell ist, nicht sein.
http://www.djangosnippets.org/snippets/947/
Ist zwar nicht genau, aber lässt zumindest einen schluss zu, wieviele Leute vor 1 h eingeloggt waren. Länger dürfte die Nutzungsphase einer Webapplikation, auch wenn diese kommerziell ist, nicht sein.