Template Graphweather Php

Marco

Message par Marco »

yves a écrit :Bonjour Tout le monde,

J'ai mis un peu de temps a voir comment fonctionner jpgraph. Mais c'est une bibliotheque qui permet de faire pas mal de truc sympa.
Je me suis donc permis de faire quelque modif sur le source mis a dispo par Titoine, et j'ai crée un nouveau script qui permet de sortir les stats annuelles.

Vous pouvez voir un resultat ici :
http://meteo.rouen.free.fr/stat.html

Si vous le souhaitez je peux vous faire parvenir ce script.

A +

Yves
Compliments!

It's really a great work!!

I also have PHP Graphweather and I should interested to your yearly statistics script, only for personal, no profit, scope. I very appreciate if you could send me your script.

I'm also trying to make more readable monthly statistics, that in the standard php graphweather template are not very readable with 30 days.

Thank you very much
Marco
Italy
Avatar de l’utilisateur
mordykuss
Membre
Messages : 22
Inscription : mar. mars 25, 2008 12:01 pm
Localisation : Lagny-sur-Marne (77) France
Contact :

Re:

Message par mordykuss »

yves a écrit :Bonjour Siegfried,

Enfin pour determiner les min et max de la période sélectionner voila ce que j'ai ajouter dans le fichier graph.php :

.........
while ($list=mysql_fetch_array($query))
{
$y1data[$i]=$list[0];//press
$y2data[$i]=$list[1];//humi
$y3data[$i]=$list[2];//temp
$y4data[$i]=$list[3];//pt rose
$y5data[$i]=$list[4];//fact vent
$count[round($list[5])]=$count[round($list[5])]+1;//dir vent
$y6data[$i]=$list[6];//vit vent
$y7data[$i]=$list[7];//pluie


switch($MYSQL_TIMESTAMP)
{
case 0 :
$timestamp[$i]=$list[8];
break;
default: case 1:
sscanf($list[8],"%4d%2d%2d%2d%2d%2d",$a_year,$a_month,$a_day,$a_hours,$a_minutes,$a_seconds);
$timestamp[$i]=intval(mktime($a_hours,$a_minutes,$a_seconds,$a_month,$a_day,$a_year,-1));
break;
}

/* AJOUT DU CODE SUIVANT POUR AFFICHER LES MINI ET MAXI SUR LA PERIODE SELECTIONNEE */
if ($y1data[$i] > $y1max)
{
$y1max = $y1data[$i];
$y1tmax =date("H:i d/m",$timestamp[$i]);
}
if ($y1data[$i] < $y1min)
{
$y1min = $y1data[$i];
$y1tmin =date("H:i d/m",$timestamp[$i]);
}
if ($y2data[$i] > $y2max)
{
$y2max = $y2data[$i];
$y2tmax =date("H:i d/m",$timestamp[$i]);
}
if ($y2data[$i] < $y2min)
{
$y2min = $y2data[$i];
$y2tmin =date("H:i d/m",$timestamp[$i]);
}
if ($y3data[$i] > $y3max)
{
$y3max = $y3data[$i];
$y3tmax =date("H:i d/m",$timestamp[$i]);
}
if ($y3data[$i] < $y3min)
{
$y3min = $y3data[$i];
$y3tmin =date("H:i d/m",$timestamp[$i]);
}
if ($y4data[$i] > $y4max)
{
$y4max = $y4data[$i];
$y4tmax =date("H:i d/m",$timestamp[$i]);
}
if ($y4data[$i] < $y4min)
{
$y4min = $y4data[$i];
$y4tmin =date("H:i d/m",$timestamp[$i]);
}
if ($y6data[$i] > $y6max)
{
$y6max = $y6data[$i];
$y6tmax =date("H:i d/m",$timestamp[$i]);
}
if ($y6data[$i] < $y6min)
{
$y6min = $y6data[$i];
$y6tmin =date("H:i d/m",$timestamp[$i]);
}
if ($y7data[$i] > $y7max)
{
$y7max = $y7data[$i];
$y7tmax =date("H:i d/m",$timestamp[$i]);
}
if ($y7data[$i] < $y7min)
{
$y7min = $y7data[$i];
$y7tmin =date("H:i d/m",$timestamp[$i]);
}

$i++;
}


.......
/* FIN AJOUT DU CODE SUIVANT POUR AFFICHER LES MINI ET MAXI SUR LA PERIODE SELECTIONNEE */




.......

/* AFFICHAGE DES RESULTATS */

$MINMAX=sprintf(" .::: Min / Max :::.n");
$MINMAX.=$char_width;
$MINMAX.= sprintf("Pression : %.1f (%s) / %.1f (%s)n",$y1min,$y1tmin,$y1max,$y1tmax);
$MINMAX.=sprintf("Humidité : %d (%s) / %d (%s)n",$y2min,$y2tmin,$y2max,$y2tmax);
$MINMAX.=sprintf("Température : %.1f (%s) / %.1f (%s)n",$y3min,$y3tmin,$y3max,$y3tmax);
$MINMAX.=sprintf("Point de rosé : %.1f (%s) / %.1f (%s)n",$y4min,$y4tmin,$y4max,$y4tmax);
$MINMAX.=sprintf("Facteur de vent : %.1f / %.1f n",$y5min,$y5max);
$MINMAX.=sprintf("Vent Max : %.1f km/hn",$y6max);
$MINMAX.=sprintf("Total pluie : %.1f mmn",$total_rainfall);

.........


Voila si tu as des questions n'hesite pas.

Au fait ton site est super chouette , son look est vraiment bien.

A +

Yves
Bonjour,

J'ai essayé ce code, il y a comme un problème. Certes je suis le p'tit nouveau du php, mais je ne vois pas comment il est possible de faire cette comparaison : if ($y1data[$i] > $y1max) (et les autres) alors que $y1max n'a pas encore été déclaré, donc n'existe pas encore. :?:
Je ne suis à priori pas le seul puisqu' APACHE me le dit environ 200 fois par passe dans la log.

Chez toi Yves, j'ai vu que l'affichage était correct, peux-tu m'expliquer ce mystère.
J'ai dû m'y prendre comme un gland !! :mrgreen:
Bien amicalement,
Jean-Michel

Vantage Pro2+ / Station auxiliaire agricole / Weatherlink / Weather Display / Virtual VP / GraphWeather 3.0.28 / W10-64

http://toutletempslaniaque.net
Image
Avatar de l’utilisateur
mordykuss
Membre
Messages : 22
Inscription : mar. mars 25, 2008 12:01 pm
Localisation : Lagny-sur-Marne (77) France
Contact :

Re:

Message par mordykuss »

yves a écrit :Bonjour Siegfried,

Enfin pour determiner les min et max de la période sélectionner voila ce que j'ai ajouter dans le fichier graph.php :

.........
while ($list=mysql_fetch_array($query))
{
$y1data[$i]=$list[0];//press
$y2data[$i]=$list[1];//humi
$y3data[$i]=$list[2];//temp
$y4data[$i]=$list[3];//pt rose
$y5data[$i]=$list[4];//fact vent
$count[round($list[5])]=$count[round($list[5])]+1;//dir vent
$y6data[$i]=$list[6];//vit vent
$y7data[$i]=$list[7];//pluie


switch($MYSQL_TIMESTAMP)
{
case 0 :
$timestamp[$i]=$list[8];
break;
default: case 1:
sscanf($list[8],"%4d%2d%2d%2d%2d%2d",$a_year,$a_month,$a_day,$a_hours,$a_minutes,$a_seconds);
$timestamp[$i]=intval(mktime($a_hours,$a_minutes,$a_seconds,$a_month,$a_day,$a_year,-1));
break;
}

/* AJOUT DU CODE SUIVANT POUR AFFICHER LES MINI ET MAXI SUR LA PERIODE SELECTIONNEE */
if ($y1data[$i] > $y1max)
{
$y1max = $y1data[$i];
$y1tmax =date("H:i d/m",$timestamp[$i]);
}
if ($y1data[$i] < $y1min)
{
$y1min = $y1data[$i];
$y1tmin =date("H:i d/m",$timestamp[$i]);
}
if ($y2data[$i] > $y2max)
{
$y2max = $y2data[$i];
$y2tmax =date("H:i d/m",$timestamp[$i]);
}
if ($y2data[$i] < $y2min)
{
$y2min = $y2data[$i];
$y2tmin =date("H:i d/m",$timestamp[$i]);
}
if ($y3data[$i] > $y3max)
{
$y3max = $y3data[$i];
$y3tmax =date("H:i d/m",$timestamp[$i]);
}
if ($y3data[$i] < $y3min)
{
$y3min = $y3data[$i];
$y3tmin =date("H:i d/m",$timestamp[$i]);
}
if ($y4data[$i] > $y4max)
{
$y4max = $y4data[$i];
$y4tmax =date("H:i d/m",$timestamp[$i]);
}
if ($y4data[$i] < $y4min)
{
$y4min = $y4data[$i];
$y4tmin =date("H:i d/m",$timestamp[$i]);
}
if ($y6data[$i] > $y6max)
{
$y6max = $y6data[$i];
$y6tmax =date("H:i d/m",$timestamp[$i]);
}
if ($y6data[$i] < $y6min)
{
$y6min = $y6data[$i];
$y6tmin =date("H:i d/m",$timestamp[$i]);
}
if ($y7data[$i] > $y7max)
{
$y7max = $y7data[$i];
$y7tmax =date("H:i d/m",$timestamp[$i]);
}
if ($y7data[$i] < $y7min)
{
$y7min = $y7data[$i];
$y7tmin =date("H:i d/m",$timestamp[$i]);
}

$i++;
}


.......
/* FIN AJOUT DU CODE SUIVANT POUR AFFICHER LES MINI ET MAXI SUR LA PERIODE SELECTIONNEE */




.......

/* AFFICHAGE DES RESULTATS */

$MINMAX=sprintf(" .::: Min / Max :::.n");
$MINMAX.=$char_width;
$MINMAX.= sprintf("Pression : %.1f (%s) / %.1f (%s)n",$y1min,$y1tmin,$y1max,$y1tmax);
$MINMAX.=sprintf("Humidité : %d (%s) / %d (%s)n",$y2min,$y2tmin,$y2max,$y2tmax);
$MINMAX.=sprintf("Température : %.1f (%s) / %.1f (%s)n",$y3min,$y3tmin,$y3max,$y3tmax);
$MINMAX.=sprintf("Point de rosé : %.1f (%s) / %.1f (%s)n",$y4min,$y4tmin,$y4max,$y4tmax);
$MINMAX.=sprintf("Facteur de vent : %.1f / %.1f n",$y5min,$y5max);
$MINMAX.=sprintf("Vent Max : %.1f km/hn",$y6max);
$MINMAX.=sprintf("Total pluie : %.1f mmn",$total_rainfall);

.........


Voila si tu as des questions n'hesite pas.

Au fait ton site est super chouette , son look est vraiment bien.

A +

Yves
Bonjour,

J'ai essayé ce code, il y a comme un problème. Certes je suis le p'tit nouveau du php, mais je ne vois pas comment il est possible de faire cette comparaison : if ($y1data[$i] > $y1max) (et les autres) alors que $y1max n'a pas encore été déclaré, donc n'existe pas encore. :?:
Je ne suis à priori pas le seul puisqu' APACHE me le dit environ 200 fois par passe dans la log.

Chez toi Yves, j'ai vu que l'affichage était correct, peux-tu m'expliquer ce mystère.
J'ai dû m'y prendre comme un gland !! :mrgreen:
Bien amicalement,
Jean-Michel

Vantage Pro2+ / Station auxiliaire agricole / Weatherlink / Weather Display / Virtual VP / GraphWeather 3.0.28 / W10-64

http://toutletempslaniaque.net
Image
Avatar de l’utilisateur
jturlier
Membre
Messages : 3149
Inscription : mar. août 22, 2006 8:38 am
Localisation : 34410 Sérignan - Languedoc
Contact :

Re: Template Graphweather Php

Message par jturlier »

Bonsoir,
le calcul par itération est intéressant mais lent,
une idée :


$sql="SELECT`abs_pressure`,`outdoor_humidity`,`outdoor_temp`,`outdoor_dew_point`,`wind_chill`,`wind_direction`,`wind_speed`,`total_rainfall`,`timestamp` FROM $DATABASE WHERE timestamp<='$stop' AND timestamp>='$start'";
$query=mysql_query($sql) or die ("Erreur SQL : ".mysql_error() );

for ($i=0;$i<16;$i++) $count[$i]=0;
$i=0;
while ($list=mysql_fetch_array($query))
{
$y1data[$i]=$list[0];
$y2data[$i]=$list[1];
$y3data[$i]=$list[2];
$y4data[$i]=$list[3];
$y5data[$i]=$list[4];
$count[$list[5]]=$count[$list[5]]+1;
$y6data[$i]=$list[6];
$y7data[$i]=$list[7];
//$timestamp[$i]=$list[8];



switch($MYSQL_TIMESTAMP)
{// remplissage de l'array timestamp
case 0 :
$timestamp[$i]=$list[8];
break;
default: case 1:
sscanf($list[8],"%4d%2d%2d%2d%2d%2d",$a_year,$a_month,$a_day,$a_hours,$a_minutes,$a_seconds);
$timestamp[$i]=intval(mktime($a_hours,$a_minutes,$a_seconds,$a_month,$a_day,$a_year,-1));
break;
}

$i++;
}


array_multisort($y1data, $timestamp); // on trie en ordre croissant $y1data.
$y1min=$y1data[0];//En pos 0 de l'array on a le mini.
$y1tmin=$timestamp[0];// Comme timestamp est ordonnée idem on a l'heure du mini
$y1max=$y1data[$i]; // le max est en dernière position de l'array, $i devrait être l'index de la dernière pos si pas sûr :$i=count($timestamp)-1;
$y1tmax=$timestamp[$i];
array_multisort($y2data, $timestamp);
$y2min=$y2data[0];
$y2tmin=$timestamp[0];
$y2max=$y2data[$i];
$y12tmax=$timestamp[$i];
array_multisort($y3data, $timestamp);
$y3min=$y3data[0];
$y3tmin=$timestamp[0];
$y3max=$y3data[$i];
$y3tmax=$timestamp[$i];
array_multisort($y4data, $timestamp);
$y4min=$y4data[0];
$y4tmin=$timestamp[0];
$y4max=$y4data[$i];
$y4tmax=$timestamp[$i];
array_multisort($y5data, $timestamp);
$y5min=$y5data[0];
$y5tmin=$timestamp[0];
$y5max=$y5data[$i];
$y5tmax=$timestamp[$i];
array_multisort($y6data, $timestamp);
$y6min=$y6data[0];
$y6tmin=$timestamp[0];
$y6max=$y6data[$i];
$y6tmax=$timestamp[$i];
array_multisort($y7data, $timestamp);
$y7min=$y7data[0];
$y7tmin=$timestamp[0];
$y7max=$y7data[$i];
$y7tmax=$timestamp[$i];
// la suite...


Je n'ai pas la possibilité de tester, donc considérez cela comme une idée mais pas plus ! :idea:

Jean
Avatar de l’utilisateur
mordykuss
Membre
Messages : 22
Inscription : mar. mars 25, 2008 12:01 pm
Localisation : Lagny-sur-Marne (77) France
Contact :

Re: Template Graphweather Php

Message par mordykuss »

Bonjour Jean,

Je te remercie pour ta réponse, je vais essayer de mettre cela en place.
Je te tiens au courant de la réussite ou de l'échec du code.

Encore merci !
Bien amicalement,
Jean-Michel

Vantage Pro2+ / Station auxiliaire agricole / Weatherlink / Weather Display / Virtual VP / GraphWeather 3.0.28 / W10-64

http://toutletempslaniaque.net
Image
Avatar de l’utilisateur
jturlier
Membre
Messages : 3149
Inscription : mar. août 22, 2006 8:38 am
Localisation : 34410 Sérignan - Languedoc
Contact :

Re: Template Graphweather Php

Message par jturlier »

Ce sera sympa,
Merci
Jean

Station : VP2 Pro Console Vue + anémomètre à Ultra-sons
Logiciels : Cumulus 1.9.4 + Cumulus2SQL
Serveur local : Apache + MySQL +PHP
PC : W10
Support Audio : FR

http://meteoserignan.ddns.net
Image
"Aide-toi d'abord toi-même et les autres t'aideront ... peut-être"
Avatar de l’utilisateur
mordykuss
Membre
Messages : 22
Inscription : mar. mars 25, 2008 12:01 pm
Localisation : Lagny-sur-Marne (77) France
Contact :

Re: Template Graphweather Php

Message par mordykuss »

Jean,

L'idée de faire un tri afin de déterminer exactement les min et les max ainsi que leur timestamp respectif, type de donnée par type de donnée semblait bien allèchante. :(

Mais enfin après quelques minutes, j'ai enfin vu les jours et heures s'afficher comme je le souhaitais. :mrgreen:

Comme tu l'as lu le php et moi, on vient juste de faire connaissance, alors la fonction array_multisort j'étais pas à la veille de l'utiliser.

Ce qu'il faut quand même savoir, c'est que, dès que les variables min et max (donnée et temps) sont déclarées(déterminées), il faut refaire le tri inverse array_multisort($timestamp, $data) sinon dans le graphique les données restent triées sur leur valeurs ascendantes et non sur le timestamp.

Dans le code d'Yves il y avait aussi un problème au niveau de la variable $MYSQL_TIMESTAMP au niveau du switch, variable qui n'est pas déclarée ce qui ajoute une ligne dans la log erreur d'Apache chaque fois que la page est appelée. J'ai viré le $ et collé une paire de double quotes devant et derrière.
Ca marche et la log reste vierge.

Ca donne ça :

$sql="SELECT `rel_pressure`,`outdoor_humidity`,`outdoor_temp`,`outdoor_dew_point`,`wind_chill`,`wind_direction`,`wind_speed`,`total_rainfall`,`outdoor_humidex`,`timestamp` FROM $DATABASE WHERE timestamp<='$stop' AND timestamp>='$start' order by timestamp";
$query=mysql_query($sql) or die ("Erreur SQL : ".mysql_error() );

for ($i=0;$i<16;$i++) $count[$i]=0;
$i=0;
while ($list=mysql_fetch_array($query))
{
$y1data[$i]=$list[0];//Pression
$y2data[$i]=$list[1];//Humidité
$y3data[$i]=$list[2];//Température Ext
$y4data[$i]=$list[3];//Point de Rosée
$y5data[$i]=$list[4];//Facteur Vent
$count[$list[5]]=$count[$list[5]]+1;//Direction Vent
$y6data[$i]=$list[6];//Vitesse Vent
$y7data[$i]=$list[7];//Pluie
$y8data[$i]=$list[8];//Humidex

switch("MYSQL_TIMESTAMP")
{
case 0 :
$timestamp[$i]=$list[9];
break;
default: case 1:
sscanf($list[9],"%4d%2d%2d%2d%2d%2d",$a_year,$a_month,$a_day,$a_hours,$a_minutes,$a_seconds);
$timestamp[$i]=intval(mktime($a_hours,$a_minutes,$a_seconds,$a_month,$a_day,$a_year,-1));
break;
}

array_multisort($y1data, $timestamp); // On trie en ordre croissant $y1data.
$y1min=$y1data[0]; // En pos 0 de l'array on a le mini.
$y1tmin=date("j/m à H\hi",$timestamp[0]); // Comme timestamp est ordonnée idem on a l'heure du mini
$i=count($timestamp)-1; // Le max est en dernière position de l'array, on ddétermine sa valeur
$y1max=$y1data[$i]; // On a le max de la donnée avec l'index
$y1tmax=date("j/m à H\hi",$timestamp[$i]);// Et ses jours et heures avec la meme position de l'index
array_multisort($timestamp, $y1data); // Ne pas oublier de rétablir l'ordre initial

array_multisort($y2data, $timestamp);
$y2min=$y2data[0];
$y2tmin=date("j/m à H\hi",$timestamp[0]);
$i=count($timestamp)-1;
$y2max=$y2data[$i];
$y2tmax=date("j/m à H\hi",$timestamp[$i]);
array_multisort($timestamp, $y2data);
// ...ainsi de suite

Un petit défaut que j'ai constaté, sans doute dû à mon ordi qui tourne 24h/24 et 7j/7 et qui doit surtout manquer de puissance (Pentium IV 2.4 Go, 1Go de ram) c'est que pour des graphiques sur une durée supérieure à 10 jours, ca devient assez longuet, 180 jours ça passe encore mais ...c'est long, quant à 365 jours ca tourne à plus de vingt secondes !! Et encore il me manque plus d'un mois puisque la station est démarrée depuis le 16/02/2008. Pas fantastiques comme temps de réponses.

Je te remercie une nouvelle fois pour tes précieux conseils
Bien amicalement,
Jean-Michel

Vantage Pro2+ / Station auxiliaire agricole / Weatherlink / Weather Display / Virtual VP / GraphWeather 3.0.28 / W10-64

http://toutletempslaniaque.net
Image
Avatar de l’utilisateur
jturlier
Membre
Messages : 3149
Inscription : mar. août 22, 2006 8:38 am
Localisation : 34410 Sérignan - Languedoc
Contact :

Re: Template Graphweather Php

Message par jturlier »

mordykuss a écrit : Ce qu'il faut quand même savoir, c'est que, dès que les variables min et max (donnée et temps) sont déclarées(déterminées), il faut refaire le tri inverse array_multisort($timestamp, $data) sinon dans le graphique les données restent triées sur leur valeurs ascendantes et non sur le timestamp.
Bonsoir Jean Michel,
plutôt que de faire un multisort à nouveau, tu pourrais essayer de repositionner le curseur en tête de l'array $query et recharger tes yXdata à la fin de tes maxi/mini
Cela devrait être moins consommateur que les multisort's renversés. mais c'est à voir ...
Tu as effectivement une faiblesse sur ta machine au niveau de la taille mémoire, le double serait pas mal et ça ne doit pas être trop cher !


mysql_data_seek($query,0);
for ($i=0;$i<16;$i++) $count[$i]=0; // je n'ai pas vu à quoi ça sert, en fait je n'ai pas cherché à comprendre
$i=0;
while ($list=mysql_fetch_array($query))
{
$y1data[$i]=$list[0];//Pression
$y2data[$i]=$list[1];//Humidité
$y3data[$i]=$list[2];//Température Ext
$y4data[$i]=$list[3];//Point de Rosée
$y5data[$i]=$list[4];//Facteur Vent
$count[$list[5]]=$count[$list[5]]+1;//Direction Vent
$y6data[$i]=$list[6];//Vitesse Vent
$y7data[$i]=$list[7];//Pluie
$y8data[$i]=$list[8];//Humidex
$i++;
}


Tu peux essayer de voir si c'est plus rapide sur des gros volumes de données

Cordialement et bonne soirée.
Jean

Station : VP2 Pro Console Vue + anémomètre à Ultra-sons
Logiciels : Cumulus 1.9.4 + Cumulus2SQL
Serveur local : Apache + MySQL +PHP
PC : W10
Support Audio : FR

http://meteoserignan.ddns.net
Image
"Aide-toi d'abord toi-même et les autres t'aideront ... peut-être"
yves
Membre
Messages : 26
Inscription : sam. sept. 30, 2006 9:48 pm
Localisation : rouen
Contact :

Re: Template Graphweather Php

Message par yves »

Bonjour à tous et bonne année !!!

Je ne suis pas forcement un pro en php. Et je suis d'accord avec vous que la méthode utilisée pour déterminer les min et max est un peu basic. Mais mes connaissances sur les requettes SQL sont elles aussi un peu limité. Cela dit le nombre d'enregistrement a traiter n'est pas très importante.
Je vous mets à dispo mon code source complet du fichier graph.php qui est actuellement utilisé sur mon site. http://meteo.rouen.free.fr/graph.zip

La méthode proposé par Jean me parait intéressante, j'esserais de la tester.

Yves
Avatar de l’utilisateur
jturlier
Membre
Messages : 3149
Inscription : mar. août 22, 2006 8:38 am
Localisation : 34410 Sérignan - Languedoc
Contact :

Re: Template Graphweather Php

Message par jturlier »

Bonjour Yves, bonjour à tous,
yves a écrit :Bonjour à tous et bonne année !!!

Je ne suis pas forcement un pro en php. Et je suis d'accord avec vous que la méthode utilisée pour déterminer les min et max est un peu basic. Mais mes connaissances sur les requettes SQL sont elles aussi un peu limité. Cela dit le nombre d'enregistrement a traiter n'est pas très importante.
Je vous mets à dispo mon code source complet du fichier graph.php qui est actuellement utilisé sur mon site. http://meteo.rouen.free.fr/graph.zip

La méthode proposé par Jean me parait intéressante, j'essaierais de la tester.

Yves
Je ne suis pas non plus un pro du PHP, mais par expérience, je sais que les calculs par itération comme tu le fait pour les mini maxi sont beaucoup moins rapides et consomment plus de ressources par rapport aux fonctions internes de PHP.
C'est d'ailleurs ton fichier qui a servi de base à notre discussion actuelle, et sur lequel j'ai suggéré de passer à une fonction intégrée comme multisort.
La seconde suggestion (seconde partie de cette discussion) est qu'il est peut-être plus rapide de déplacer un pointeur et de recharger des arrays que de faire de multiples multisorts, mais là je ne suis pas sûr. Je pense malgré tout que cela doit limiter l'impact mémoire, (c'est ce qui semble le plus faire défaut sur la machine de Jean-Michel !)

Les résultats de vos tests à tous seront intéressants pour savoir quelles techniques utiliser pour améliorer certaines performances des scripts PHP. (la partie SQL -tous moteurs confondus- n'est pas, elle, réellement bloquante : pour la plupart d'entre nous, nous n'utilisons même pas 10% de la capacité standard de travail)
Bonne journée à tous
Jean

Station : VP2 Pro Console Vue + anémomètre à Ultra-sons
Logiciels : Cumulus 1.9.4 + Cumulus2SQL
Serveur local : Apache + MySQL +PHP
PC : W10
Support Audio : FR

http://meteoserignan.ddns.net
Image
"Aide-toi d'abord toi-même et les autres t'aideront ... peut-être"
Avatar de l’utilisateur
mordykuss
Membre
Messages : 22
Inscription : mar. mars 25, 2008 12:01 pm
Localisation : Lagny-sur-Marne (77) France
Contact :

Re: Template Graphweather Php

Message par mordykuss »

Bonjour Jean,

J'ai testé ton code. Effectivement, on divise le temps presque par 3, ce qui est logique puisqu'on supprime 6 tris (8,xx au lieu de 21,xx).
Par contre ce qui est surprenant, c'est qu'il ne tient absolument pas compte du repositionement du curseur au début de l'array, il a l'air de conserver l'ordre du dernier tri :?:

Bon c'est pas grave, c'est pas tout le temps qu'on interroge sur 365 jours... J'ai commandé sur ebay 2 barrettes d'un Go chacune pour 25€ port compris, ça ira plus vite!

Bon maintenant va falloir que je trouve un truc pour charger ma base en automatique, parce que faut avouer que si c'est effectivement efficace d'avoir un bouton "update" sur une page web, encore faut-il que quelqu'un régulièrement fasse un petit clic dessus. :mrgreen:

Avec tous mes remerciements
Bien amicalement,
Jean-Michel

Vantage Pro2+ / Station auxiliaire agricole / Weatherlink / Weather Display / Virtual VP / GraphWeather 3.0.28 / W10-64

http://toutletempslaniaque.net
Image
Avatar de l’utilisateur
jturlier
Membre
Messages : 3149
Inscription : mar. août 22, 2006 8:38 am
Localisation : 34410 Sérignan - Languedoc
Contact :

Re: Template Graphweather Php

Message par jturlier »

Salut Jean-Michel,

peux-tu préciser
mordykuss a écrit :Bon maintenant va falloir que je trouve un truc pour charger ma base en automatique, parce que faut avouer que si c'est effectivement efficace d'avoir un bouton "update" sur une page web, encore faut-il que quelqu'un régulièrement fasse un petit clic dessus. :mrgreen:
quelle station et quel logiciel de contrôle

Jean
Avatar de l’utilisateur
mordykuss
Membre
Messages : 22
Inscription : mar. mars 25, 2008 12:01 pm
Localisation : Lagny-sur-Marne (77) France
Contact :

Re: Template Graphweather Php

Message par mordykuss »

Bonjour Jean,

Ma station est une ws2350 (bourrée de bugs) et le pgm associéest Heavy weather.
Ce pgm alimente un fichier .dat et c'est à partir de ce .dat que je recharge ma database en passant par une page php.
Bon ça marche, mais il faut se connecter de temps en temps pour mettre à jour, ca c'est pas top.

Voilà tu sais tout.
Bien amicalement,
Jean-Michel

Vantage Pro2+ / Station auxiliaire agricole / Weatherlink / Weather Display / Virtual VP / GraphWeather 3.0.28 / W10-64

http://toutletempslaniaque.net
Image
Avatar de l’utilisateur
jturlier
Membre
Messages : 3149
Inscription : mar. août 22, 2006 8:38 am
Localisation : 34410 Sérignan - Languedoc
Contact :

Re: Template Graphweather Php

Message par jturlier »

Bonjour Jean-Michel,
j'ai compris, je regarde ça de plus près car j'ai peut-être une solution.
Envoie moi un morceau de ton fichier heavyweather (history.dat je suppose)
Bonne journée
Jean
Avatar de l’utilisateur
jturlier
Membre
Messages : 3149
Inscription : mar. août 22, 2006 8:38 am
Localisation : 34410 Sérignan - Languedoc
Contact :

Re: Template Graphweather Php

Message par jturlier »

Jean-Michel,
tu as aussi la possibilité de créer une tâche planifiée toutes les 10 min par exemple
C:\wamp\bin\php\php5.2.5\php.exe d:\html\climatovarx.php
A démarrer dans :
C:\wamp\bin\php\php5.2.5
Avec naturellement tes propres paramètres.
Tu ne mets aucun accès écran (html ...), à la rigueur si nécessaire un meta de code de caractères utf-8 ou iso8859-1 ...
Tu n'as plus à appuyer sur les boutons !
Dernière modification par jturlier le lun. janv. 12, 2009 3:20 pm, modifié 1 fois.
Jean

Station : VP2 Pro Console Vue + anémomètre à Ultra-sons
Logiciels : Cumulus 1.9.4 + Cumulus2SQL
Serveur local : Apache + MySQL +PHP
PC : W10
Support Audio : FR

http://meteoserignan.ddns.net
Image
"Aide-toi d'abord toi-même et les autres t'aideront ... peut-être"
Répondre