les records un mois donné

Forum destiné aux problèmes de Tags, recherche d’une fonction, d’un calcul, Tag qui parait ne pas fonctionner, du Tag et rien que du Tag !
Avatar du membre
webmaster
Site Admin
Site Admin
Messages : 2611
Enregistré le : 12 déc. 2006, 20:54
Localisation : Rieux 51 FRANCE
Contact :

Re: les records un mois donné

Message par webmaster » 06 janv. 2013, 09:00

Bonjour,

Et bien non, ce n'est pas trop logique.

Pour moi:

Code : Tout sélectionner

<?php
echo date("z"),' --- ', date("G");
?>
Donne: 5 --- 8

Et:

Code : Tout sélectionner

<?php
date_default_timezone_set('UTC');
echo date("z"),' --- ', date("G");
?>
Donne: 5 --- 7

Ceci entre 8 et 9H00 local, bien évidemment.
L'ordre de passer en UTC n'a pas l'air d'être pris en compte chez ton hébergeur.

Je doute que tu ais accès au fichier de configuration de PHP, tu vas devoir passer par l'assistance.
Cordialement

Rieux

Tudgur
Participation 6
Participation 6
Messages : 1770
Enregistré le : 13 mai 2007, 16:47
Localisation : 29880 Plouguerneau
Contact :

Re: les records un mois donné

Message par Tudgur » 06 janv. 2013, 09:42

Bonjour,
Mais j'ai la même chose que toi !
Entre 9h et 10h locales

Code : Tout sélectionner

<?php
echo date("z"),' --- ', date("G");
?>
donne 5 --- 9

Code : Tout sélectionner

<?php
date_default_timezone_set('UTC');
echo date("z"),' --- ', date("G");
?>
donne 5 --- 8
Cordialement.

Tudgur
http://meteo-plouguerneau.fr" onclick="window.open(this.href);return false;

Avatar du membre
webmaster
Site Admin
Site Admin
Messages : 2611
Enregistré le : 12 déc. 2006, 20:54
Localisation : Rieux 51 FRANCE
Contact :

Re: les records un mois donné

Message par webmaster » 06 janv. 2013, 21:35

Ca se complique !
Je regarde chez moi cette nuit ce qu'il se passe réellement, je n'ai jamais regardé.
Cordialement

Rieux

Avatar du membre
webmaster
Site Admin
Site Admin
Messages : 2611
Enregistré le : 12 déc. 2006, 20:54
Localisation : Rieux 51 FRANCE
Contact :

Re: les records un mois donné

Message par webmaster » 07 janv. 2013, 11:37

Bonjour,

Donc après minuit à 0H15 locale:

Code : Tout sélectionner

<?php
echo date("z"),' --- ', date("G");
?>
me donne: 6 --- 0

Code : Tout sélectionner

<?php
date_default_timezone_set('UTC');
echo date("z"),' --- ', date("G");
?>
me donne 5 --- 23

Donc l'heure UTC est bien prise en compte pour donner le numéro du jour.
Si la journée d'ensoleillement est imputée au jour suivant, c'est que le script est lancé avant que le fichier du jour soit généré, je ne vois pas d'autre solution.
Cordialement

Rieux

Tudgur
Participation 6
Participation 6
Messages : 1770
Enregistré le : 13 mai 2007, 16:47
Localisation : 29880 Plouguerneau
Contact :

Re: les records un mois donné

Message par Tudgur » 07 janv. 2013, 14:05

Bonjour et merci pour ta veille !
webmaster a écrit : Si la journée d'ensoleillement est imputée au jour suivant, c'est que le script est lancé avant que le fichier du jour soit généré, je ne vois pas d'autre solution.
Je ne pense pas que ce soit la journée d'ensoleillement qui est inputée au jour suivant...
Le 1er janvier 2013, j'ai eu une journée de soleil normalement comptée
Dès les premières minutes du 2 janvier (heure locale) une 2ième journée est comptée mais elle aurait sans doute été effacée à 1h00 (0h00 UTC).
Mais je pense qu'elle a été comptée puisque le 2 janvier 2012, j'ai eu une journée d'ensoleillement et donc un "1" figurait dans la colonne jour_soleil de ma table, à la ligne du 2 janvier. Ce "1" ne se serait effacé qu'au lancement de extremes.php à 0h17 UTC, c'est à dire 1H17 locale.

Il est aussi possible qu'une journée d'ensoleillement soit inputée au jour suivant, jusqu'à la première exécution de extrêmes.php à 0h17 UTC.
Je n'ai jamais vérifié !

Si manuellement, je met dans ma base un "1" au 7 janvier, la journée est bien sûr comptabilisée.
Mais dès que extremes.php est exécuté, elle est enlevée puisqu'il n'y a pas eu de soleil aujourd'hui.

Le problème n'est pas très important : c'est simplement que pendant 1h ou 2h selon hiver ou été, et de nuit, 1 journée d'ensoleillement supplémentaire peut être affichée...
Cordialement.

Tudgur
http://meteo-plouguerneau.fr" onclick="window.open(this.href);return false;

Avatar du membre
webmaster
Site Admin
Site Admin
Messages : 2611
Enregistré le : 12 déc. 2006, 20:54
Localisation : Rieux 51 FRANCE
Contact :

Re: les records un mois donné

Message par webmaster » 08 janv. 2013, 15:54

Bonjour,
Tudgur a écrit :Si manuellement, je met dans ma base un "1" au 7 janvier, la journée est bien sûr comptabilisée.
Mais dès que extremes.php est exécuté, elle est enlevée puisqu'il n'y a pas eu de soleil aujourd'hui.
Oui c'est vrai, il est impossible que la valeur de J-1 passe sur J. Par contre l'inverse est possible en cas de décalage horaire entre le PC et le serveur.
Tudgur a écrit :Le problème n'est pas très important : c'est simplement que pendant 1h ou 2h selon hiver ou été, et de nuit, 1 journée d'ensoleillement supplémentaire peut être affichée...
Non si tu travaille en UTC sur ton PC et ton hébergeur, cela ne devrait jamais arriver.


Je ne comprends pas comment tu as pu avoir ce problême entre le premier et le deux Janvier !
Cordialement

Rieux

Tudgur
Participation 6
Participation 6
Messages : 1770
Enregistré le : 13 mai 2007, 16:47
Localisation : 29880 Plouguerneau
Contact :

Re: les records un mois donné

Message par Tudgur » 08 janv. 2013, 20:55

webmaster a écrit :Je ne comprends pas comment tu as pu avoir ce problême entre le premier et le deux Janvier !
C'est simple, comme je l'ai dit précédemment.
Les jours_soleil de 2012 ne sont pas purgés dans ma base de donnée.
Donc, au 1er janvier 2013, il y avait déjà un "1" dans ma base à la ligne du 2 janvier (4h06 de soleil le 2 janvier 2012)
Ce premier janvier 2013, 3h10 de soleil, donc journée comptée.
Et ce 2 janvier 2013, à 0h00 locale la journée de 2012 vient s'ajouter à celle de 2013...
Jusqu'à la première exécution de extremes.php, à1h17 locale, qui remplace le 1 par un 0.

Mais à vérifier, quand le soleil voudra bien se montrer, ou dans la nuit du 11 au 12 puisqu'il y a eu une journée de soleil le 12/01/2012.

Je ne sais plus à quelle heure j'ai vu le problème, juste après minuit heure locale je pense.
Cordialement.

Tudgur
http://meteo-plouguerneau.fr" onclick="window.open(this.href);return false;

Tudgur
Participation 6
Participation 6
Messages : 1770
Enregistré le : 13 mai 2007, 16:47
Localisation : 29880 Plouguerneau
Contact :

Re: les records un mois donné

Message par Tudgur » 11 janv. 2013, 15:38

Confirmation de mon observation.
10 janvier 2013 : une journée de soleil de comptée. (2ième journée de soleil de l'année)
Le 11 janvier 2012, pas de soleil : donc 0 dans la ligne du 11 janvier dans la base de sonnées.
Le 11 janvier 2013, à 0h00 locale, toujours 2 jours d'ensoleillement.
Le 11 janvier 2013, à 0h03 locale, je mets un 1 manuellement dans la base de donnée à la ligne du 11 : un 3ième jour d’ensoleillement est compté même après exécution de extremes.php.
Je suis sûr qu'à 0h17 UTC, donc 1h17 locale, la première exécution de extremes.php aurait effacé ce 1 et on serait revenu à 2 jours d'ensoleillement.
Le 11 janvier 2013, à 0h04 locale, je remplace le 1 par 0 dans la base de données, on revient à 2 jours d'ensoleillement...

Le problème se pose donc de 0h00 locale à 0h17 UTC, s'il y a eu soleil l'année précédente.
Le plus simple est donc d'effacer tous les 1 de la base de données mais comment fait-on pour purger la colonne facilement plutôt que ligne par ligne ?
Cordialement.

Tudgur
http://meteo-plouguerneau.fr" onclick="window.open(this.href);return false;

Avatar du membre
webmaster
Site Admin
Site Admin
Messages : 2611
Enregistré le : 12 déc. 2006, 20:54
Localisation : Rieux 51 FRANCE
Contact :

Re: les records un mois donné

Message par webmaster » 11 janv. 2013, 16:59

Bonjour,
Donc pour tes visiteurs nocturnes, écris une page portant le nom de ton choix avec ce code:

Code : Tout sélectionner

<?php
$jour_soleil = 0;
$db = mysql_connect('sql4', 'meteoplouguerne', 'xxxxxx');
mysql_query("set names UTF8");
mysql_select_db('meteoplouguerne_extremes',$db);
mysql_query ("UPDATE mois SET jour_soleil='$jour_soleil' ");
mysql_close();
?>
Envoie la page chez ton hébergeur et lance là manuellement.
Théoriquement l'ensemble des jours seront remplacés par un 0.
Prends soin de noter les jours à garder avant ! ! !
Cordialement

Rieux

Tudgur
Participation 6
Participation 6
Messages : 1770
Enregistré le : 13 mai 2007, 16:47
Localisation : 29880 Plouguerneau
Contact :

Re: les records un mois donné

Message par Tudgur » 11 janv. 2013, 19:10

Bonjour,

Merci beaucoup pour ce code.
Ça marche impec !!!
Je pourrais même aller jusqu'à créer un tâche planifiée le 1er janvier de chaque année....
Cordialement.

Tudgur
http://meteo-plouguerneau.fr" onclick="window.open(this.href);return false;

Avatar du membre
webmaster
Site Admin
Site Admin
Messages : 2611
Enregistré le : 12 déc. 2006, 20:54
Localisation : Rieux 51 FRANCE
Contact :

Re: les records un mois donné

Message par webmaster » 11 janv. 2013, 19:30

oui, ou mettre une condition dans le fichier extreme.php (celui qui se lance toutes les heures) qui ne l’exécute que le premier janvier s'il est moins de deux heures.
Cordialement

Rieux

Tudgur
Participation 6
Participation 6
Messages : 1770
Enregistré le : 13 mai 2007, 16:47
Localisation : 29880 Plouguerneau
Contact :

Re: les records un mois donné

Message par Tudgur » 11 janv. 2013, 20:30

euuuuhhhh, oui, et on fait ça comment ?
Cordialement.

Tudgur
http://meteo-plouguerneau.fr" onclick="window.open(this.href);return false;

Avatar du membre
webmaster
Site Admin
Site Admin
Messages : 2611
Enregistré le : 12 déc. 2006, 20:54
Localisation : Rieux 51 FRANCE
Contact :

Re: les records un mois donné

Message par webmaster » 11 janv. 2013, 21:11

Un truc dans ce genre doit fonctionner:

Code : Tout sélectionner

if ($jour == 1 and date("G") <= 2)
	{
		$jour_soleil = 0;
		$db = mysql_connect('sql4', 'meteoplouguerne', 'xxxxxx');
		mysql_query("set names UTF8");
		mysql_select_db('meteoplouguerne_extremes',$db);
		mysql_query ("UPDATE mois SET jour_soleil='$jour_soleil' ");
		mysql_close();
	}
Place ce code après le test d'année bissextile:

Code : Tout sélectionner

if (date("L") == 0 and date("z") >= 59) {$jour = date("z") + 2;
}
else {$jour = date("z") + 1;
}
Tu peux faire un test cette nuit en changeant le jour, cette nuit sera le douzième jour.
Cordialement

Rieux

Tudgur
Participation 6
Participation 6
Messages : 1770
Enregistré le : 13 mai 2007, 16:47
Localisation : 29880 Plouguerneau
Contact :

Re: les records un mois donné

Message par Tudgur » 12 janv. 2013, 09:04

Bonjour,
Je n'ai pas eu le courage de veiller.
J'ai donc fait un test avec

Code : Tout sélectionner

if ($jour == 11 and date("G") >= 22)
et ça à bien fonctionné : les journées d’ensoleillement du 1er et du 10 on été supprimées, pas celle du 11 (effacée puis recréée).
Pour G<==2, je suppose que l'on pourrait tout aussi bien mettre G<==1 ou même G<==9 : il suffit que ce soit fait avant le lever du soleil le 1er janvier.

Merci encore.
Cordialement.

Tudgur
http://meteo-plouguerneau.fr" onclick="window.open(this.href);return false;

Avatar du membre
webmaster
Site Admin
Site Admin
Messages : 2611
Enregistré le : 12 déc. 2006, 20:54
Localisation : Rieux 51 FRANCE
Contact :

Re: les records un mois donné

Message par webmaster » 12 janv. 2013, 13:05

Bonjour,

Génial !
Je n'imaginais pas que tu restes éveillé pour voir ce qu'il allait se passer, mais plutôt que tu regarderais ce matin si ta base avait bien été réinitialisée.

J'ai mis deux heures pour un éventuel problème avec l'heure UTC et pour éviter d'effacer les jours d'ensoleillement plusieurs fois en mettant plus tard.

Bonne continuation
Cordialement

Rieux

Répondre