Formation par Olivier Duffez

Formation au référencement par Olivier Duffez, créateur de WebRankInfo !
Une formule efficace alliant théorie et pratique, avec une haute disponibilité des intervenants
Cette formule a déjà convaincu plusieurs centaines d'entreprises, pourquoi pas vous ?
Réservez vite votre place en ligne (convention possible pour imputer sur le budget formation)

Formation référencement Marseille

Voici comment Accélérer l'affichage des Graphiques

Poster un nouveau sujet Imprimer cette discussion    Forum -> RobotStats - GoogleStats   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
Pitoo
Nouveau WRInaute

Inscrit le: 12 Avr 2003
Messages: 16
Localisation: Strasbourg

URL permanente de ce messagePosté le : Sam Avr 12, 2003 20:44    Sujet du message: Voici comment Accélérer l'affichage des Graphiques

Bonsoir,

L'affichage des graphiques est relativement long, particulièrement pour les périodes de 6 et 12 mois.

Ceci est du au fait qu'une requête SQL est effectuée pour chaque jour, soit 360 requêtes pour la période de 1 an !
Même avec un serveur bien caustaud, ca prends du temps !

L'idée est de modifier le code de graph.php à la ligne 90 pour n'avoir qu'une requête SQL à effectuer.

Le code d'origine :
Code:
$xLabels = array();
$ydata   = array();
$imax    = 30 * $nbm;
$i       = $imax;
while($i >= 0)
{
  // courbe : nb de visites
  $sql  = "SELECT date, count(id) AS 'nb'";
  $sql .= " FROM ".$TABLE_LOG;
  $sql .= " WHERE robot=".$robot;
  $sql .= "   AND TO_DAYS(NOW()) - TO_DAYS(date) = ".$i;
  $sql .= " GROUP BY robot";
  $res  = mysql_query($sql) or erreurServeurMySQL($sql);
  $enr  = mysql_fetch_array($res);
  $xLabels[$imax - $i] = substr($enr["date"], 0, 10);
  $ydata[$imax - $i]   = $enr["nb"];
  $i--;
}


à remplacer par celui-ci :
Code:
$xLabels = array();
$ydata   = array();
$imax    = 30 * $nbm;

$sql  = "SELECT TO_DAYS(date), date, count(id) AS 'nb'";
$sql .= " FROM ".$TABLE_LOG;
$sql .= " WHERE robot=".$robot;
$sql .= "   AND TO_DAYS(NOW()) - TO_DAYS(date) <= ".$imax;
$sql .= " GROUP BY TO_DAYS(date)";

$res  = mysql_query($sql) or erreurServeurMySQL($sql);

$i       = 0;
while( $enr  = mysql_fetch_array($res) )
{
  if( $i > 0 ) while( $suiv < $enr[0] ) {
      $xLabels[$i] = "";
      $ydata[$i]   = 0;
      $suiv++;
      $i++;
  }
  $xLabels[$i] = substr($enr["date"], 0, 10);
  $ydata[$i]   = abs($enr["nb"]);
  $suiv = $enr[0] + 1;
  $i++;
}


Ce code exécute la requete SQL suivante :
Citation:
SELECT TO_DAYS(date), date, count(id) AS 'nb' FROM gs_log WHERE robot=1 AND TO_DAYS(NOW()) - TO_DAYS(date) <= $nbm GROUP BY TO_DAYS(date)


Le défaut de cette requête est de ne rien retourner pour les journées ou le moteur en question n'est pas passé. Il faut donc 'combler' les trous pour avoir un affichage correct du graphique;
d'où la petite boucle :
Code:
  if( $i > 0 ) while( $suiv < $enr[0] ) {
      $xLabels[$i] = "";
      $ydata[$i]   = 0;
      $suiv++;
      $i++;
  }


Cette modif comporte encore deux petits défauts :

- les visites occupent toutes la largeur du graph, même si la periode explorée est plus grande que l'ancienneté des visites du moteur sur le site

- les jours ou aucune visite de moteur n'a eu lieu, le label sur l'axe horizontal est vide, il faudrait calculer la date à partir de la valeur retournée par TO_DAYS() dans $enr[0] pour pouvoir l'affecter au tableau $xLabels[$i]

Si vous avez des commentaires ou suggestions...


Dernière édition par Pitoo le Sam Avr 12, 2003 21:32; édité 1 fois
 
Pitoo Visiter le site web du posteur
WebRankInfo
Administrateur du site
Administrateur du site

Inscrit le: 19 Avr 2002
Messages: 14012
Localisation: Toulouse

URL permanente de ce messagePosté le : Sam Avr 12, 2003 21:01    Sujet du message: Voici comment Accélérer l'affichage des Graphiques

super ! n'hésite pas dès que tu auras encore optimisé à nous en faire part...
 
WebRankInfo Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> RobotStats - GoogleStats Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1 - 
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort