Posted October 16, 200420 yr Dans mon script php, j'aimerais compter le nombre de visiteurs qui sont actuellement en train de visiter le site. Chaque visiteur, qu'il soit loggé ou pas, a plusieures variables session, comme par exemple $_SESSION['id'] ce que je voudrais, c'est compter le nombre de $_SESSION['id']. C'est possible? Si non, faudrait que je passe par une base de données. Y a moyen de faire en sorte qu'un champ mysql se supprime automatiquement apres 5 minutes?
October 16, 200420 yr Pour compter le nombre de sessions ouvertes : sur toutes les pages met : <? session_start(); // ouverture de la session ?> et à lendroit où tu veut mettre le compteur : <? if ($fp=opendir(session_save_path())) { // ouverture du dossier où sont stocké les fichiers des sessions $count=0; // mise à 0 du compteur $session_timeout = 5*60; // temps de validité d'une session (ici 5*60 secondes soit 5 min) while (($file=readdir($fp))!==false) { // on liste les fichiers du répertoire if ($file!="." && $file!="..") { if (time()-fileatime(session_save_path()."/".$file)<$session_timeout) $count++; // si la date du dernier accès au fichier de la session est < à 5 min on incrémente le compteur } } } echo $count; // et on affiche le résulat ?> Edited October 16, 200420 yr by Country
October 16, 200420 yr Author y a un bug dans ton script mais j'arrive pas a le trouver. Ca m'a l'air d'etre quelque part dans le while() En fait il me trouve aucune session. Il affiche toujours 0 à la fin, meme si j'ai 2 fichier session. autre chose, si je modifie ton code comme ca: while (($file=readdir($fp)!==FALSE)) // on liste les fichiers du répertoire { if ($file!="." && $file!="..") { if ( (time()-fileatime(session_save_path()."/".$file)) < $session_timeout ) $count++; } print session_save_path()."/".$file; } la il affiche ceci c:/temp/1c:/temp/1c:/temp/1c:/temp/1 bref, il trouve 4 fichiers, et il y en a en fait que 2 et ils ne s'appellent pas 1, mais un truc du genre "sess_6f37c596bff60dcce48c83f36e841498" tu vois pourquoi?
October 16, 200420 yr En effet j'avai une petite erreur dans le while, il faut mettre : while (($file=readdir($fp))!==false) { à la place de while (($file=readdir($fp)!==false)) { une ) n'était pas à la bonne place. J'ai édité ma source au dessus par la même occasion Voila, là ça marche :)
October 16, 200420 yr ran-tan-plan : Ca fonctionne ? Bon, j'ai pas tout lu désolé, mais 56K et timings serrés powa. Pour des scripts tout fait, tu peut aller sur phpscripts-fr. C'est en général libre et souvent sous GPL.
October 17, 200420 yr Author uiui ca fonctionne nickel en fait a la base je cherchais pas un script tout fait mais plutot une piste, pour pouvoir coder mon script a moi. Mais vu que Country m'a fait le script en entier, pourquoi pas
Archived
This topic is now archived and is closed to further replies.