Mon graphique Highcharts a cessé de fonctionner

Ce forum est dédié aux discussions qui concernent les graphiques réalisés avec la librairie Highcharts, Une question, un bug ?

Modérateurs : jturlier, Météo Villarzel

Répondre
Javier
Messages : 263
Enregistré le : 15 févr. 2014, 09:23
Localisation : San Sebastián, España
Contact :

Mon graphique Highcharts a cessé de fonctionner

Message par Javier » 14 juin 2021, 09:42

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
Davis Vantage Pro2 +, Windows 10, Windows 7 (64), Graphweather 3.0.15, Weatherlink 6.0.3, template Pierre-André, template Jachym
Image

Javier
Messages : 263
Enregistré le : 15 févr. 2014, 09:23
Localisation : San Sebastián, España
Contact :

Re: Mon graphique Highcharts a cessé de fonctionner

Message par Javier » 14 juin 2021, 12:47

Je dois ajouter que ce graphique fait également défaut aux autres utilisateurs qui l'ont utilisé jusqu'à présent.
Davis Vantage Pro2 +, Windows 10, Windows 7 (64), Graphweather 3.0.15, Weatherlink 6.0.3, template Pierre-André, template Jachym
Image

Javier
Messages : 263
Enregistré le : 15 févr. 2014, 09:23
Localisation : San Sebastián, España
Contact :

Re: Mon graphique Highcharts a cessé de fonctionner

Message par Javier » 16 juin 2021, 12:34

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");
?>
Davis Vantage Pro2 +, Windows 10, Windows 7 (64), Graphweather 3.0.15, Weatherlink 6.0.3, template Pierre-André, template Jachym
Image

Répondre