Page 1 sur 1

Mon graphique Highcharts a cessé de fonctionner

Posté : 14 juin 2021, 09:42
par Javier
Bonjour à tous

J'ai un graphique Highcharts qui fonctionne parfaitement depuis des années sans aucun problème. Ce graphique représente l'erreur moyenne (MAE) dans la prévision de la température quotidienne.

Bon, depuis quelques jours ça ne marche plus et je ne trouve pas la cause.
Au début j'ai pensé à quelques nouvelles incompatibilités avec Highcharts mais, comme j'ai ces fichiers installés localement, je pense que ces incompatibilités ne devraient pas exister. :roll:

Voici l'adresse html du graphique en question :

http://kocher.es/wxsimcsvmysql/buildmae ... ainer2.php

Voici l'adresse de la carte Highcharts elle-même :

http://kocher.es/wxsimcsvmysql/buildmae ... maeyear.js

Comme cela m'arrive souvent, j'ai peut-être l'erreur sous les yeux mais je n'arrive pas à le trouver

Javier

Re: Mon graphique Highcharts a cessé de fonctionner

Posté : 14 juin 2021, 12:47
par Javier
Je dois ajouter que ce graphique fait également défaut aux autres utilisateurs qui l'ont utilisé jusqu'à présent.

Re: Mon graphique Highcharts a cessé de fonctionner

Posté : 16 juin 2021, 12:34
par Javier
J'ai déjà découvert la cause du problème dans le graphique:

http://kocher.es/wxsimcsvmysql/buildmae ... ainer2.php

Il existe un script qui se charge d'obtenir certaines données pour alimenter 2 séries du graphique Hjghcharts, voici son adresse :

http://kocher.es/wxsimcsvmysql/buildmae ... aeyear.php

Pour une raison que je ne connais pas, il y a une partie du code qui ne s'exécute pas, il notifie même (après une longue attente) la ligne dans laquelle ladite erreur se produit (Ligne 39):

"Erreur fatale : Temps d'exécution maximum de 300 secondes dépassé dans H:\webspace\hostings\kocher.es\hosting\www\wxsimcsvmysql\buildmae-test\buildmaeyear.php on line 39"

Je ne sais pas s'il s'agit d'une nouvelle incompatibilité avec PHP.

La solution, pour l'instant, a été d'éliminer les séries qui ne fonctionnaient pas sur le graphique.

Je joins le code dudit script, au cas où quelqu'un trouverait la cause possible.

<?php

error_reporting(E_ALL);
ini_set('display_errors', '1');

set_time_limit(300);

date_default_timezone_set("Europe/Madrid");
$maeFile = "correc.txt";
$linecount = 0;
$handle = fopen($maeFile, "r");
while(!feof($handle)){
$line = fgets($handle);
$linecount++;
}
$linecount = $linecount - 1;
fclose($handle);
$lines = file($maeFile);
for ($i = 1; $i <= 365; $i++) {

$lines = str_replace(",",".",$lines); // replace the decimal sign (,) by decimal point (.)

${'wxsim'.$i} = preg_split('/[\s]+/', $lines[$linecount+$i-366]);
}
$f = fopen("maecompyear.js", "w");
for ($i = 1; $i <= 365; $i++) {
$maedate = date("M j", strtotime(str_replace('/', '-', ${'wxsim'.$i}[0])));
fwrite($f, "var maedateyr".$i." = '".$maedate."';\n");
fwrite($f, "var curmaeyr".$i." = ".${'wxsim'.$i}[16].";\n");
fwrite($f, "var curmixyr".$i." = ".${'wxsim'.$i}[22].";\n");
}
fclose($f);
$date=new DateTime();
date_sub($date,date_interval_create_from_date_string("2 years"));
$search = date_format($date,"d/m/Y");
chkdate:
$newsearch = "-\b".$search."\b-";
$fileContents = file_get_contents($maeFile);
if (preg_match($newsearch, $fileContents)) {
goto gooddate;
} else {
$search = date("d/m/Y",strtotime($search . "-1 days"));
goto chkdate;
}
gooddate:
$line_number = false;
while (list($key, $line) = each($lines) and !$line_number) {
$line_number = (strpos($line, $search) !== FALSE) ? $key + 1 : $line_number;
}
for ($i = 1; $i <= 365; $i++) {
${'mae'.$i} = preg_split('/[\s]+/', $lines[$line_number+$i-2]);
}
$f = fopen("maecompyear.js", "a");
for ($i = 1; $i <= 365; $i++) {
fwrite($f, "var priormaeyr".$i." = ".${'mae'.$i}[16].";\n");
}
fclose($f);
die("There was a fatal error");
?>