Connectés et déconnectés

davidtennis
WRInaute discret
WRInaute discret
 
Messages: 55
Inscription: 5 Avr 2007

Connectés et déconnectés

Message le Jeu Avr 19, 2007 7:31

Bonjour,

Je gère un site avec un système d'authentification d'utilisateurs (avec les traditionnels session_start()).
J'aimerais que les utilisateurs puissent savoir qui est connecté. Quelle est selon vous la meilleure façon de faire ça ?

Je pourrais avoir une table des connectés, et les connexions sont retirées de la table quand un utilisateur clique sur "Se Déconnecter". Seulement, si un utilisateur ferme son navigateur à la place, son entrée dans la table des connectées ne sera pas supprimée. Est-ce qu'il y a dans ce cas une meilleure solution qu'un time-out ?

Merci

zim3
WRInaute discret
WRInaute discret
 
Messages: 189
Inscription: 17 Mar 2007

Message le Jeu Avr 19, 2007 8:12

Bah tout simplement, a chaque chargement de page, si le user est connecté, tu créer un enregistrement dans une table avec pseudo/timestamp.

Et de temps à autres, tu fais un delete de tous les enregistrements ayant un timestamp actuelle>timestamp-5 secondes par exemple...


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2215
Inscription: 10 Avr 2005

Message le Jeu Avr 19, 2007 8:36

Tu donnes en nom de fichier session le login de l'utilisateur.

Après tu peux même compter le nombre de sessions pour avoir ton nombre de connectés.

zim3
WRInaute discret
WRInaute discret
 
Messages: 189
Inscription: 17 Mar 2007

Message le Jeu Avr 19, 2007 8:48

dorian53 a écrit:Tu donnes en nom de fichier session le login de l'utilisateur.


Délicat pour les gens en mutualisé

objectifweb
WRInaute discret
WRInaute discret
 
Messages: 130
Inscription: 6 Oct 2004

Message le Jeu Avr 19, 2007 9:06

Bonjour,

Je ne suis pas spécialiste ajax ou flash mais il est possible de mettre dans ta page un petit flash voir invisible mais qui lance une requête par exemple toutes les secondes avec le pseudo en paramètre, dés que le visiteur ferme sa page, tu nettoies la db des visiteurs par exemple toutes les 3 secondes...

La même chose est possible en ajax puisque les appels à la db se font sans changer de page, j'espère avoir été clair mais de toute façon tu seras toujours obligé de travailler avec un timeout quelque part

Pat

zim3
WRInaute discret
WRInaute discret
 
Messages: 189
Inscription: 17 Mar 2007

Message le Jeu Avr 19, 2007 9:44

Quel utilité objectifweb?

Si quelqu'un ne charge pas une page d'un site pendant plus de XX minutes... c'est qu'il n'est plus dessus...


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2215
Inscription: 10 Avr 2005

Message le Jeu Avr 19, 2007 9:56

Laissez vos bases tranquilles :) Elles ont autres choses à gérer que vos crons toutes les 5 minutes.

ekay
WRInaute discret
WRInaute discret
 
Messages: 57
Inscription: 7 Mar 2005

Message le Jeu Avr 19, 2007 10:48

lol..

oui c bien ca..
tu peux simplement mettre une ptite iframe qui se reactualise toutes les x secondes pour updater le timestamp du user..

effectivement il se peut que la personne soit encore sur le site et qu'elle soit en train de preparer a bouffer ce qui ne doit pas obligatoirement la deloguer.

Par contre fais attention car c'est bouffant.. sachant que chaque insertion et chaque delete sur la page obligera une reconstruction de l'index.. ! sans parler des pertes et de la fragmentation du disque que ca peut causer

Dans ce cas utilise plutot une table memoire (type heap) ca t'evitera ce probleme et rendra les operations nettement plus rapidement

davidtennis
WRInaute discret
WRInaute discret
 
Messages: 55
Inscription: 5 Avr 2007

Message le Jeu Avr 19, 2007 16:56

Donc une solution serait de mettre à jour un timestamp à chaque nouvelle page ou à toutes les x secondes puis virer les utilisateurs dont le timestamp est vieux de + de y secondes.

Mais ça impliquerait
1) pas mal de requêtes sql dans le cas de l'update toutes les x secondes
2) il faudrait une tâche cron régulièrement pour éliminer les "vieux" timestamp
tout cela me parait moyennement compatible avec mon hébergement mutualisé (3 connexions max à la bdd + pas de tâches cron). Je me trompe ?

ekay
WRInaute discret
WRInaute discret
 
Messages: 57
Inscription: 7 Mar 2005

Message le Ven Avr 20, 2007 11:56

le cron t'en as juste besoin pour la suppression des comptes deconnectés..

si t'as pas la possibilité de le faire sur ton serveur regarde du coté de webcron.org


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité