Jump to content

PHP, compter le nbr de visiteurs

Featured Replies

Posted

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?

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 by Country

  • 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?

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 :)

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.

  • Author

uiui ca fonctionne nickel :ouioui:

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 :chinois:

Archived

This topic is now archived and is closed to further replies.