Liste des connectés


link182
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 474
Inscription: 26 Juil 2005

Liste des connectés

Message le Mer Jan 25, 2006 11:43

Bonjour,
j'aurais aimé afficher la liste des connectés sur mon site (loggué via session PHP), comme par exemple sur ce forum :).
J'ai pensé à créer une table Connectés et à l'alimenter/mettre à jour à chaque changement de page.

Le problème c'est que cela multplie enormément les rêquetes sur la base (nombre de pages vues * nb connectés)

Y-a-t-il un moyen de moins solliciter la base pour connaitre les users ONline

zimounet
WRInaute passionné
WRInaute passionné
 
Messages: 1796
Inscription: 8 Nov 2004

Message le Mer Jan 25, 2006 12:24

Un champ ip, un cham timestamp, un champ pseudo, a chaque chargement on supprime tous les enregistrements quand le timestanp est plus vieux que 15 minutes (par exemple), puis tu liste le nombre d'enregistrements, voir tu affiche les pseudo des connectés!


link182
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 474
Inscription: 26 Juil 2005

Message le Mer Jan 25, 2006 14:17

c'est exactement ce que j'ai fait.
Le probleme c'est que si un user charge 30 pages a chaque visite, et qu'il y en a 50 users connectés en même temps, cela fait 30*50 = 1500 requetes sur la base en peu de temps, juste pour avoir la liste des connectés.

Cela ne fait-il pas trop de requetes supplémentaire ?

zimounet
WRInaute passionné
WRInaute passionné
 
Messages: 1796
Inscription: 8 Nov 2004

Message le Mer Jan 25, 2006 14:57

Tu peux faire un system qui limitte le nombre de fois que la requete vas etre executé pour une visite.

Genre tu dis que si le nombre de seconde est impaire, on n'execute pas la requete, sinon on l'execute, ce qui fais une chance sur deux que la requete soit executé.

Et selon l'évolution de ton site, tu modifie un peu ce paramètres, de facon a trouver le juste milieu entre précision du system, et sollicitation du serveur sql.

Mais il y a d'autres moyen: travailler avec un fichier texte par exemple, ou tu regarde a chaque fois il y a combien de temps que le "nettoyage de la table" s'est fait....

Bref jamais de pb que des solutions

muelsaco
WRInaute discret
WRInaute discret
 
Messages: 128
Inscription: 19 Jan 2006

Message le Mer Jan 25, 2006 16:53

En effet zimounet à raison tu peux toujours stocker les info dans un fichier même si c'est moins pratique que la base de donnée mais en effet çà va aléger le nombre de requêtes ;)
Sinon tu mets un petit random pour ne pas enregistrer les changements de pages à tous les coups :)


Digit
WRInaute impliqué
WRInaute impliqué
 
Messages: 613
Inscription: 18 Avr 2003

Message le Mer Jan 25, 2006 21:27

Travailler avec un fichier texte n'est pas forcément moins coûteux.
Vous placez 15 minutes comme laps de temps pour purger les visiteurs ?
Qu'elle est la valeur d'usage ? J'étais plutôt orienté sur une durée de 2 minutes pour obtenir une indication significative

zimounet
WRInaute passionné
WRInaute passionné
 
Messages: 1796
Inscription: 8 Nov 2004

Message le Mer Jan 25, 2006 21:47

muelsaco a écrit:Sinon tu mets un petit random pour ne pas enregistrer les changements de pages à tous les coups :)


Ce qui reviens a se baser sur les secondes... lol

Sinon oui:
$var = srand(1,50);
if ($var==1)
{
//opération sql
}

Ce qui te fais une chance sur 5 pour 10 visiteurs simultanés(dans la pratique, c'est peut significatif) que ta page soit executé

Mais il est certains, qu'avec cette solution, plus tu as de visiteurs, plus tu ton compteurs de visiteurs simultanés (et ton afficheur de pseudo en ligne) sera précis, mais couteux en ressources SQL. Donc je plancherais plus sur le fichier texte ou alors sur les minutes ou sur les secondes, genre si la pages est chargé lorsque les secondes sont entre 55 et 60 secondes, on fais la requetes... Et si tu as vraiment beaucoup de visiteurs en meme temps, tu peut rétrécire ce temps, genre entre 58 et 60 secondes...

Cela dit, j'ai jamais eu besoin de mettre de tel trucs en place, une petite requete sur chaque page, ce n'est pas énorme quand on compare a un CMS ou il y a plus de 10 requetes par pages en moyenne...


cybervince
WRInaute impliqué
WRInaute impliqué
 
Messages: 880
Inscription: 1 Aoû 2004

Message le Mer Jan 25, 2006 23:27

zimounet a écrit:Cela dit, j'ai jamais eu besoin de mettre de tel trucs en place, une petite requete sur chaque page, ce n'est pas énorme quand on compare a un CMS ou il y a plus de 10 requetes par pages en moyenne...

C'est effectivement ce que j'allais dire.
A moins de vouloir l'afficher sur des pages qui en temps normal ne se connectent pas à la base, faire une petite requête d'update et une requête de selection, ca ne prend pas beaucoup de temps.


link182
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 474
Inscription: 26 Juil 2005

Message le Jeu Jan 26, 2006 0:47

Dans le cas ou il faut mettre à jour tout lse 2 minutes :
j'enregistre dans une variable de session le timestamp actuel à la connexion, et je teste cette variable à chaque page appelée.

si seulement time() > ($_SESSION['time'] + 120)
alors je met à jour ma table, et je reaffecte le timestamp actuel à $_SESSION['time']


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

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google Sets

  • Combinaison de mots-clés
    Cet outil vous permet de créer à partir de quelques mots-clés une liste d'expressions constituées des mots pris dans tous les ordres possibles. Il sert aux analyses de positionnement et achats de mots-clés.
  • Les sous-domaines d'un site
    Cet outil vous permet de trouver la liste des sous-domaines (indexés) d'un site.
  • Suggestions de mots-clés
    Cet outil vous fournit une liste de mots sémantiquement proches du mot que vous fournissez en entrée. Il peut servir à vous donner des idées de mots à utiliser sur vos pages, voire de contenus à ajouter.
  • Suggestions Google Suggest
    Cet outil vous permet d'obtenir une liste de 10 mots ou expressions suggérés par Google sur la base d'un mot que vous fournissez.


Qui est en ligne

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