Voici comment Accélérer l'affichage des Graphiques
2 messages • Page 1 sur 1
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 :
à remplacer par celui-ci :
Ce code exécute la requete SQL suivante :
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 :
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...
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: Tout sélectionner
$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: Tout sélectionner
$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 :
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: Tout sélectionner
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 20:32, édité 1 fois.
-

WebRankInfo - Administrateur du site

- Messages: 15905
- Inscription: Ven Avr 19, 2002 19:51
super ! n'hésite pas dès que tu auras encore optimisé à nous en faire part...
2 messages • Page 1 sur 1
Lectures recommandées sur ce thème :
- Google Labs lance Google Alternate Views
- Complément à l'étude PageRank et backlinks
- Etude statistique de la structure du web
- Gmail Mobile : lire ses mails sur son mobile
- Afficher le PageRank en entier dans Firefox (barre d'outils Google)
- CSV AdStats v4 : le logiciel pour analyser ses statistiques AdSense
- AT Internet lance AnalyzerNX : Come & live the New eXperience!
- Google accélère le rythme des mises à jour
- Comment contrôler ses Sitelinks Google
- La toolbar pour Firefox de Google
Consultez la description détaillée des produits ou services de Google suivants : Google Reader Trends, Google SearchMash, Google Website Optimizer
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


le forum