zeldoi5
Messages postés58Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention13 novembre 2005
-
28 avril 2005 à 17:50
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 2007
-
29 avril 2005 à 17:43
Bonjour tout le monde!
Dans le cadre d'un projet je dois réaliser des statistiques sous forme de graphiques et radars.
Pour ceci j'utilise JpGraph (j'ai aussi essayé ChartDirector)
Mais j'ai un gros soucis, car la requête que 'jeffectue à l'air de faire flancher le serveur (Xeon 700) sur lequel je travaille.
Je dois faire des moyennes sur des mesures inscrites en base tous les 1/4 heure :
//Etablit la connexion avec le serveur de base de données, ainsi qu'à la base
server_connect("localhost","","");
//Etablit la connexion à la base de données
bdd_connect("theBDD");
for ($h=12;$h <= $heure;$h++)
{
for ($m=0;$m <= 45;$m=$m+15)
{
$h1 = $h + 1;
$m0 = ":0";
$s0 = ":0";
$m1 = $m + 15;
$heureprecedente = $h .":". $m . $s0;
$heuresuivante = $h .":". $m1 . $s0;
if ($m < 45)
{
$query = 'select AVG(ms.MESURE_RAM), AVG(ms.MESURE_CPU), AVG(mme.TR), AVG(l.TR)'
. ' FROM mesure_syst ms, mesure m, mesure_meta mme, mesure_lan l'
. ' WHERE m.ID_MESURE = ms.ID_MESURE'
. ' AND m.ID_MESURE = mme.ID_MESURE'
. ' AND m.ID_MESURE = l.ID_MESURE '
. ' AND m.DATE_MESURE = "' . $dateToday . '" '
. ' AND m.HEURE_MESURE between "' . $heureprecedente . '" and "' . $heuresuivante . '" ';
}
else
{
$heureprecedente = $h .":". $m . $s0;
$m1 = 59;
$heuresuivante = $h .":". $m1 . $s0;
$query = 'select AVG(ms.MESURE_RAM), AVG(ms.MESURE_CPU), AVG(mme.TR), AVG(l.TR)'
. ' FROM mesure_syst ms, mesure m, mesure_meta mme, mesure_lan l'
. ' WHERE m.ID_MESURE = ms.ID_MESURE'
. ' AND m.ID_MESURE = mme.ID_MESURE'
. ' AND m.ID_MESURE = l.ID_MESURE '
. ' AND m.DATE_MESURE = "' . $dateToday . '" '
. ' AND m.HEURE_MESURE between "' . $heureprecedente . '" and "' . $heuresuivante . '" ';
}
$resultQuery = mysql_query($query);
$rowQuery = mysql_fetch_row($resultQuery);
$row1[$h] = $rowQuery[0]/1000;
$row2[$h] = $rowQuery[1];
$row3[$h] = $rowQuery[2];
$row4[$h] = $rowQuery[3];
echo("Charge RAM en performance entre $heureprecedente et $heuresuivante : $tx_RAM[$h] ");
echo("Charge CPU moyenne en performance entre $heureprecedente et $heuresuivante : $tx_CPU[$h]");
echo("Temps de réponse moyen en performance M entre $heureprecedente et $heuresuivante : $row3[$h]");
echo("Temps de réponse moyen LAN en performance entre $heureprecedente et $heuresuivante : $row4[$h]");
}
}
// ensuite vient l'affichage....... (je ne vais pas décrire la suite....)
?>
Apparemment le serveur flanche, car quand l'heure (c'est à dire la variable $heure) est inférieure à 12, ça fonctionne, mais après :
Fatal error: Maximum execution time of 30 seconds exceeded in d:\www\reporting\ben\ebl\courbes_4s.php on line 79
Avec la ligne 79 : $resultQuery = mysql_query($query);
Pouvez vous m'aider s'il vous plaît?
Ya t'il un moyens d'optimiser la requête? Ou même (solution pir) de fixer le temps d'excution de la requête à un temps supérieur que 30 secondes ??