Partage
  • Partager sur Facebook
  • Partager sur Twitter

question script connectés simultanés

    14 février 2006 à 22:02:06

    hey all!
    c'est quoi le script qui bouffe le moins de resources ?

    le script de connecé simulatanée proposé sur ce site (marche vace base de donnée ici)

    ou un script se basant sur des fichiers textes (création d'un fichier texte par ip, puis on copte tout les fichiers texte).

    <?
    $laps=300;
    $repstats="data";
    function erreur($code)
            {
            global $repstats;
            switch($code)
                    {
                    case 1;
                    echo "document.write(\"Erreur de creation du r&eacute;pertoire <b>$repstats</b><br>Error : Impossible to create directory <b>$repstats</b>\");";
                    break;

                    case 2;
                    echo "document.write(\"Erreur de creation des fichiers TXT dans <b>$repstats</b><br>Error : Impossible to create TXT files into <b>$repstats</b>\");";
                    break;
                    }
            exit;
            }


    //---------------------------------------------------------------------------------------------------
    //      PROGRAMME
    //---------------------------------------------------------------------------------------------------

    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-cache, must-revalidate");
    header("Pragma: no-cache");

    // Temps actuel en secondes
    $now=time();

    // Creation du repertoire $repstats s'il n'existe pas
    if(!is_dir("$repstats"))
            {
            if(!@mkdir("$repstats",0755)) {erreur(1);}
            }
           
    // Mise a jour du fichier du visiteur dans le cas [hide|show]   
    if ($action=="show"||$action=="hide")
            {
            // Nom du fichier du visiteur encours
            $fichier="$repstats/$REMOTE_ADDR.txt";
           
            // Mise a jour (date de modification du fichier utilisee) ou creation du fichier du visiteur
            $fp=@fopen("$fichier","w");
            if(!$fp) {erreur(2);}
            fputs($fp,"");
            fclose($fp);       
           
            // Suppresion des fichiers et comptage du nombre de fichiers
            $nb=0;
            $handle=opendir("$repstats");
            while ($tmp = readdir($handle))
                    {
                    if($tmp!="." && $tmp!=".." && $tmp!="record.txt")
                            {
                            if(filemtime("$repstats/$tmp")+$laps<$now) {@unlink("$repstats/$tmp");}
                            else {$nb++;}
                            }
                    }
            closedir($handle);
           
            // LECTURE DU RECORD POUR VERIFICATION SI SCORE BATTU
            $new_record="";
            if(file_exists("$repstats/record.txt"))
                    {
                    $fp=@fopen("$repstats/record.txt","r");
                    if(!$fp) {erreur(2);}
                    while (!feof ($fp))
                            {
                            list ($cpt_tmp, $date_tmp)=split("\|",fgets($fp, 4096));
                            if($cpt_tmp<=$nb) {$new_record="$nb|$now";}
                            }
                    fclose ($fp);
                    }
            else
                    {
                    // Creation du fichier record pour la premiere fois
                    $fp=@fopen("$repstats/record.txt","w");
                    if(!$fp) {erreur(2);}
                    fputs($fp,"$nb|$now");
                    fclose($fp);   
                    }
           
            // Ecriture du fichier record si score battu
            if($new_record!="")
                    {
                    $fp=@fopen("$repstats/record.txt","w");
                    if(!$fp) {erreur(2);}
                    fputs($fp,"$new_record");
                    fclose($fp);   
                    }
           
            // Affichage du nombre de connectes
            if($action=="show") {echo "document.write(\"<b>$nb Visiteurs</b>\");";}
            }
    ?>
    • Partager sur Facebook
    • Partager sur Twitter
      15 février 2006 à 11:46:46

      Sans vouloir trop m'avancer, il me semble que l'accès aux fichiers est assez couteux...
      • Partager sur Facebook
      • Partager sur Twitter
        15 février 2006 à 11:56:36

        il y a moyen de faire plus optimisé que le script proposé sur ce site, tout en restant avec la base de données ;)

        Si tu souhaites enregistrer les IPs dans un fichier, utiliser un seul fichier, et soit une IP par ligne, soit séparé par des ; par exemple, et après, tu découpes la chaîne.
        • Partager sur Facebook
        • Partager sur Twitter
          15 février 2006 à 14:16:49

          oki doki !
          merci !

          mais sinon, si on compare juste ces deux scripts, quel est le plus couteux ?

          plusieurs fichiers texte comme je fait la, c'est tès couteux ? parceque un script de connecté simultané avec base de donnée: ca fait du requetes / page au minimum, par visiteurs, donc c'est énorme :|
          • Partager sur Facebook
          • Partager sur Twitter
            15 février 2006 à 14:25:05

            il vaut mieux dans ce cas n'utiliser qu'un seul fichier texte ;)
            • Partager sur Facebook
            • Partager sur Twitter
              16 février 2006 à 11:03:30

              le site du zero utilise quoi?
              • Partager sur Facebook
              • Partager sur Twitter
                20 février 2006 à 10:49:35

                up...
                j'aimerai bien un script ultra optimisé, qu'il soit SQL ou non.
                parceque en fait, le script de connectés simultanés du site du zero est bien, mais lol, fo 3 requetes minimum :|
                • Partager sur Facebook
                • Partager sur Twitter

                question script connectés simultanés

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown