2010-08-14 4 views
4

J'ai une application dans laquelle je souhaite afficher le nombre d'utilisateurs connectés au système. Im essayant de déterminer la manière la plus propre de faire ceci qui ne créera pas une grande charge sur le système.Django Enregistrement Nombre d'utilisateurs connectés

Je sais que le système garde une trace de la "dernière connexion" Donc je pourrais faire une requête et agrémenter le nombre d'utilisateurs dont la dernière connexion est dans un temps donné?

Y a-t-il de meilleures solutions?

Toutes les pensées sont les bienvenus !! S'il vous plaît.

Répondre

1

L'utilisation du last logged in time ne fonctionne pas. Vos sessions peuvent durer plusieurs jours/semaines, vous ne connaîtrez donc pas le nombre d'utilisateurs actifs.

Une solution consisterait à créer une table avec des sessions de connexion dans lesquelles vous stockez cet ID de session dans un cookie de session. Les cookies de session expirent une fois que l'utilisateur a fermé la fenêtre de son navigateur afin de vous donner une estimation précise du moment où les utilisateurs se sont connectés. Si vous voulez stocker la durée entière de la session, vous devez également mettre à jour la table. affichage de la page pour stocker l'heure à laquelle l'utilisateur a été actif pour la dernière fois. Ce serait légèrement plus lourd pour votre base de données.

+0

Y at-il un crochet pour le faire dans l'enregistrement django? Je peux facilement créer un modèle pour cela mais comment accéder à la vue de connexion depuis la réinscription de django pour que je puisse mettre à jour cette table ??? –

+0

@DZ: Vous pouvez créer un middleware pour mettre à jour automatiquement la table avec chaque page vue. Il suffit de mettre le middleware _after_ le middleware de la session afin que vous puissiez voir si quelqu'un est connecté. – Wolph

+0

Serait-ce plutôt DB intensive? –

Questions connexes