Connectés et déconnectés

WRInaute discret
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
 
WRInaute discret
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...
 
WRInaute passionné
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.
 
WRInaute discret
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
 
WRInaute discret
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...
 
WRInaute discret
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
 
WRInaute discret
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 ?
 
WRInaute discret
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
 
Discussions similaires
Haut