Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/11/2010, 14h59   #1
Futur Membre du Club
 
Inscription : juin 2007
Messages : 81
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 81
Points : 17
Points : 17
Par défaut Afficher la liste des personnes connectées

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
babyboy6492 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 16h18   #2
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 17h02   #3
Futur Membre du Club
 
Inscription : juin 2007
Messages : 81
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 81
Points : 17
Points : 17
Et si je garde le cookie que pendant 1heure d'inactivité, ma théorie serait-elle possible??
babyboy6492 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 16h38   #4
Futur Membre du Club
 
Inscription : juin 2007
Messages : 81
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 81
Points : 17
Points : 17
Après plus amples réflexions, j'ai décidé de mettre dans le fichier factories.yaml ces parametres:
Code :
1
2
3
4
5
6
7
8
  user:
    class: myUser
    param:
      timeout: 1800
 
  storage:
    param:
      session_cookie_lifetime: 1800
Je ne garde donc la session ouverte que pendant 30min.
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?
babyboy6492 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 18h42   #5
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h23.


 
 
 
 
Partenaires

Hébergement Web