Partage
  • Partager sur Facebook
  • Partager sur Twitter

Calcul du nombre d'inscrits actifs sur mon site

Sujet résolu
    6 avril 2006 à 5:26:18

    Salut,

    Je voudrais optimisé mon code pour calculer le nombre d'inscrits actifs sur mon site

    <?php
    //Nombre d'inscrits
    $nb = 0;
    //Selection de tous les membres
    $select_ = "SELECT * FROM MaTable ORDER BY id"
    $envoi = mysql_query($select);
    while($recupere = mysql_fetch_assoc($envoi))
       {

       //On décompose la dernière visite du membre (sous la forme YmdHis)   
       sscanf($recupere['Visite'], "%4s%2s%2s%2s%2s%2s", $date_a, $date_m, $date_j, $date_H, $date_i, $date_s);     
       $mktime = mktime ($date_H,$date_i,$date_s,$date_m,$date_j,$date_a);

       $time = time();
                                                                                           
       $duree = $time - $mktime;
                                   
       //Si le membre est actif ces 30 derniers jours, on le comptabilise
       if ($duree <= 60*60*24*30)
       {   
          $nb = $nb+1;
       }

    }
    echo "Nombre de membre actifs : ".$nb;
    ?>


    Etant donné que ce code fait le tour de " TOUS " les membres du site, ça ralenti le chargement de la page.
    Si vous avez une idée d'optimisation, je suis preneur.

    Merci

    Tilix.
    • Partager sur Facebook
    • Partager sur Twitter
      6 avril 2006 à 9:29:19

      Tu peut prendre le probleme a l'envert.

      Tu cree une variable similaire a $recupere['Visite'] mais qui correspond a la date que tu veut chercher (ici 30 jour en arriere).
      Ensuite dans ta requete sur la base tu peut metre un WHERE visite > ($date-30jour) , deja sa limite le nombre de personne, et puis tu peut utiliser la variable count aussi dans ta requete , sa evide d'avoir a compter le nombre d'entree apres.
      • Partager sur Facebook
      • Partager sur Twitter
        6 avril 2006 à 10:09:04

        Pour préciser, je dirais que la solution repose beaucoup sur ta requête et ta base .. il vaudrais mieux stocker les dates de visite avec des timestamp...

        Il te suffit ensuite de faire une variable $time qui a la valeur du timestamp du moment - 3600*24*30 et tu fais une requête du genre :

        SELECT count(id) FROM MaTable WHERE visite > $time


        Ainsi cette requête te comptera tout les id dont le timestamp de la dernière visite (le champs visite) est supérieur au timestamp construit précédemment ...

        Pour tout effectué il y a donc : 1 calcul en php, une requête count(), l'affichage ... et c'est fini :)

        Bon courage
        • Partager sur Facebook
        • Partager sur Twitter
          6 avril 2006 à 14:22:01

          Voilà ce que j'ai fais :

          $jour = time()(60 * 60 * 24 * 30) ;
          $visite = date("YmdHis", $jour);
                                                                         
          $select = "SELECT COUNT(id) AS NombreDinscrits FROM MaTable WHERE Visite > '".$visite."'";           
          $envoi = mysql_query($select);
          $recupere = mysql_fetch_array($envoi);

          echo "Nombre de membre actifs : ".$recupere['NombreDinscrits'];


          Merci
          • Partager sur Facebook
          • Partager sur Twitter

          Calcul du nombre d'inscrits actifs sur mon site

          × 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