|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : juin 2007 Messages : 81 ![]() |
Bonjour à tous,
Pour mon site web, je souhaiterai pouvoir afficher quelque part la liste des utilisateurs connectés et éventuellement le nombre de personne connecté. Je pense pour cela rajouter un champ dans sf_guard_user_profile: is_connected type int(1) que je passerai à 1 lorsque l'utilisateur se connecte puis à 0 lorsqu'il se déconnecte ou que son cookie de session a expiré. Tout d'abord, est-ce une bonne solution? Si oui, comment faire pour updater la base de données aux moments adéquat (je n'arrive pas à trouver l'action sf_guard_signin qui permet de mettre a jour le champ update_at à la valeur de la date à laquelle l'utilisateur s'est connecté pour la dernière fois). Je précise que j'ai modifié le temps de conservation du cookie de session à 36h... Merci de votre aide |
|
|
00
|
|
|
#2 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Es-tu sur que ta théorie soit la plus réaliste ?
Avec tes paramètres, un gugus qui ne se déconnecte pas sera considéré comme connecté même s'il n'a plus bougé depuis plus d'un jour ? Et comment fais-tu pour changer les valeurs, vu que tu n'as pas l'heure de la dernière connexion ? On avait déjà une discutions la dessus et l'idée était de stocker les sessions dans une table de la base, et de ce servir des sessions pour compter le nombre de connecter, dans mes souvenirs, il y a avait un problème avec sfGuard, qui ne nettoye pas correctement les sessions, il laisse une session pour l'utilisateur inconnu, une fois l'utilisateur connecté (ben oui, avant d'être connecté, il est inconnu...) A priori, cela est corrigé dans la dernière version. Mais même là, il reste ta durée de session trop long... La solution serait, je pense, de passer par les filtres, de créer un filtre session, qui, éventuellement, vérifie si la personne est connectée ou anonyme, et la création d'un enregistrement dans une table avec le type de user, l'id pour un connecté, le N° de session pour un non connecté et un time code. Une routine qui passe épisodiquement une fois sur X (X dépend du nombre de connexions par heure, plus les connexions sont nombreuses, plus X doit être grand). Cela implique de récupérer les événements de connexion et déconnexion pour traiter la table en conséquence. Pas simple, il est étonnant qu'il n'y ait pas un plugin qui le fasse, du moins, je n'ai jamais vu.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Inscription : juin 2007 Messages : 81 ![]() |
Et si je garde le cookie que pendant 1heure d'inactivité, ma théorie serait-elle possible??
|
|
|
00
|
|
|
#4 | ||
|
Futur Membre du Club
![]() Inscription : juin 2007 Messages : 81 ![]() |
Après plus amples réflexions, j'ai décidé de mettre dans le fichier factories.yaml ces parametres:
Code :
Du coup je pense que mon idée de rajouter un is_connected dans la table profile sera appliquable et que cette théorie est réaliste. Qu'en pensez-vous? Dans le cadre de cette théorie, il faut que je passe à 1 le champs quand l'utilisateur est bien connecté et à 0 quand il se déconnecte. A priori rien de bien compliquer pour le moment sauf que je ne trouve pas l'endroit auquel je dois effectué cette requète... Plus difficile, il faut que je passe à 0 le champ lorsque le cookie de l'utilisateur a expiré. Est-ce faisable de vérifier l'existence de son cookie ou pas? Si oui comment? |
||
|
|
00
|
|
|
#5 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Tu ne peux pas vérifier l'existance d'un cookie hors une demande explicite de connexion de l'utilisateur. De plus, s'il a coupé l'ordinateur sans déconnecter tu ne peux pas le savoir.
En fait, je ne tiendrais absolument pas compte de la durée de la session. J'ai donné la solution à l'aide d'un filtre qui gère la mise à jour d'une table dédiée. Et il faut y mettre un timecode de la dernière apparition de l'utilisateur, pour calculer s'il est encore en ligne, ou pas (on dira moins de 3 minutes, en ligne, entre 3 et 6 minute, peut-être en ligne, plus de 6 minute, plus en ligne), les informations ne pourrons être qu'informative, jamais certaines. Il reste, si c'est vital pour l'application, la possibilité de passer par un code javascript sur toutes les pages qui envoie un jeton régulier tant que la page est affichée dans l'explorateur. La, on peut savoir réellement, combien de personnes affiche une page du site. Avec des complications, si une personne à plusieurs pages dans plusieurs fenêtres, une charge réseau et système importante et on ne compte pas les personnes qui ont désactivé le javascript.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
Copyright © 2000-2012 - www.developpez.com