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.
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
Mon graphique Highcharts a cessé de fonctionner
Modérateurs : jturlier, Météo Villarzel
-
- Messages : 263
- Enregistré le : 15 févr. 2014, 09:23
- Localisation : San Sebastián, España
- Contact :
Mon graphique Highcharts a cessé de fonctionner
Davis Vantage Pro2 +, Windows 10, Windows 7 (64), Graphweather 3.0.15, Weatherlink 6.0.3, template Pierre-André, template Jachym
-
- 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
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
-
- 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
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");
?>
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");
?>
Code : Tout sélectionner
Davis Vantage Pro2 +, Windows 10, Windows 7 (64), Graphweather 3.0.15, Weatherlink 6.0.3, template Pierre-André, template Jachym