[Script PHP] connectés

clad
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 474
Inscription: 25 Fév 2005

[Script PHP] connectés

Message le Lun Sep 19, 2005 10:29

salut,

je cherche un bon script PHP qui montre combien il ya de connectés sur le site


e-kiwi
Modérateur
Modérateur
 
Messages: 15617
Inscription: 23 Déc 2003

Message le Lun Sep 19, 2005 10:41

Merci google
http://www.actulab.com/script-php--visi ... nectes.php

(approximatif, http n est pas un mode connecté)

sky
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 260
Inscription: 3 Mar 2003

Message le Lun Sep 19, 2005 10:41

Salut

J'aime beaucoup ce script petit script qui utilise juste un fichier texte.
Il te faudra :

- 1 page cpt.txt (chmod 777)
- 1 page count.php
- 1 fonction pour appeller le compteur

La page count.php
Code: Tout sélectionner
<?php
#
## Le compteur (ce code) est basé sur un script du site http://www.actulab.com/.
## N'oublier pas de leurs rendre visite :).
## N'oublié pas non plus de mettre le fichier cpt.txt en CHMOD 777.
#

$compteur_live = file("cpt.txt");

$premiere_ligne_a_garder=-2;
do {
$premiere_ligne_a_garder=$premiere_ligne_a_garder+2;
} while((date('U', strtotime('-300 seconds')) > $compteur_live[$premiere_ligne_a_garder]) && ($premiere_ligne_a_garder < count($compteur_live)));

if(isset($_SERVER["REMOTE_ADDR"])) {
  $ip_en_cours = $_SERVER["REMOTE_ADDR"];
}else{
  $ip_en_cours = "Non identifiable";
}

$compteur = "";
if($premiere_ligne_a_garder < count($compteur_live)) {
  for($i=$premiere_ligne_a_garder; $i<count($compteur_live); $i=$i+2) {
   
    if(trim($compteur_live[$i+1]) != $ip_en_cours) {
      $compteur .= trim($compteur_live[$i])."\n".trim($compteur_live[$i+1])."\n";
    }
   
  }
}

$compteur .= date('U')."\n".$ip_en_cours;

$pointeur=fopen("cpt.txt","w");
fputs($pointeur,$compteur);
fclose($pointeur);
?>


Pour appeller le compteur, utiliser cette fonction :
Code: Tout sélectionner
function afCompteur($path){
  $compteur_live = file($path."/cpt.txt"); 
  $out=(round(count($compteur_live)/2))." ";
  if((count($compteur_live)/2) > 1) {
   $out.="visiteurs connectés";
  }else{
    $out.="visiteur connecté";
  }
  return $out;
}


Exemple d'utilisation :
Pour maintenir le fichier cpt.txt à jours, il faut include le fichier count.php, et pour afficher le nbr de connecté, on appele la fonction afCompteur() :
Code: Tout sélectionner
<?php
include("count.php");
afCompteur("./repertoire");
?>


Simple, facile à utiliser et pas de requêtes mysql inutilent.
Sky


e-kiwi
Modérateur
Modérateur
 
Messages: 15617
Inscription: 23 Déc 2003

Message le Lun Sep 19, 2005 10:44

>> Simple, facile à utiliser et pas de requêtes mysql inutilent.

et tu t'es jamais demandé si d'ouvrir un fichier, recuperer toutes les lignes et le fermer n'était pas plus gourmand qu'une requette en BDD ? :-)


doic
WRInaute passionné
WRInaute passionné
 
Messages: 1147
Inscription: 7 Nov 2003

Message le Lun Sep 19, 2005 11:32

Bonne question... as-tu la réponse E-kiwi?


Ohax
WRInaute accro
WRInaute accro
 
Messages: 6406
Inscription: 5 Juil 2004

Message le Lun Sep 19, 2005 11:46

D'après ce que j'ai déjà pu lire c'est moins gourmand mais je doute sérieusement...

Personnellement je préfère utiliser la base de donnée pour faire ça

clad
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 474
Inscription: 25 Fév 2005

Message le Lun Sep 19, 2005 17:40

ok merci


Thierry Bugs
WRInaute accro
WRInaute accro
 
Messages: 4377
Inscription: 16 Juin 2004

Message le Lun Sep 19, 2005 17:48

je me sers de Viewonline sans base de donnée, hébergé sur ton site
c'est l'occasion de faire un petit merci à l'auteur pour son excellent script ;)
http://matthieu.chevalier.free.fr/mcscripts/


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

Message le Lun Sep 19, 2005 17:48

A mon sens ces scripts paramétrés à 300 secondes (5 minutes) servent à flatter son égo en grossissant les stats.
Pour indiquer un nombre de connectés il me semble que cette valeur devrait être largement réduite. (et en plus ça fait moins de lignes à analyser donc c'est plus performant)
Ou alors mentionner que ce sont les visiteurs ces 5 dernières minutes, et non pas des connectés.
Les systèmes basés sur des fichiers ne peuvent pas supporter un gros traffic :
- conflit d'accès au fichier
- perte de certaines valeurs pour ceux qui n'ont pas pu être écrits.
C'est tout l'intérêt d'une base de données.

sky
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 260
Inscription: 3 Mar 2003

Message le Mar Sep 20, 2005 8:03

Oui, 5mn est beaucoup, mais de toute façon, quel que soit la technique, on a jamais le nbr de personne en ligne exact .... (du moins, pas en http). Tu peut aussi mettre à 2 mn si ça te plais ...

Sinon, pour le "cimbat" fichier ou bdd ... ça d"pend beaucoup de ton serveur aussi. Si t'es sur free, un compteur fichier texte sera plus rapide. Ensuite, ça dépend de toi lol :)

Pour ce qui est des pb de lecture/écriture en nbr ... il existe une focntion qui marche très bien : flock() (http://fr.php.net/manual/fr/function.flock.php)

Ensuite, moins gourmand ou pas ... pour un simple lecture/écriture ... je sais pas ...

Sky

sky
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 260
Inscription: 3 Mar 2003

Message le Mar Sep 20, 2005 8:30

je retire ce que j'ai sur flock.
Je vient de passer 1 heure à lire à ce sujet, et c'est assès complexe pour assurer une ecriture propre à 100% quand y'a beaucoup de connectés.

Alors si t'a un gros site avec 10 personne en simultanées, choisi une bdd ^^. Sauf si t'aime te prendre la tete sur la fonction flock :)


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é