Le serveur MySql et Apache restent en heure UTC

Résolu
cocodu67... Messages postés 3156 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 2 juillet 2024 - 1 juil. 2024 à 15:22
cocodu67... Messages postés 3156 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 2 juillet 2024 - 2 juil. 2024 à 15:31

Bonjour,

J'ai changé de serveur tout en restant chez le même hébergeur afin de changer de plateforme de gestion de l'hébergement, ce n'est plus CPanel cette fois. Ce n'est pas un VPS mais pas un serveur dédié non plus même si la RAM et le CPU me sont réservés.

Auparavant sur CPanel, le serveur apache était à l'heure française, MySql aussi, PHP aussi. Maintenant on me dit que seul PHP peut être au fuseau horaire français, ce qui vient d'être réglé.

J'ai donc deux problèmes:

- J'ai des tâches cron qui doivent se lancer à une heure précise. Comment je gère ça ? Je peux les régler pour se lancer à 22h et comme l'heure UTC est inférieure de 2 heures à l'heure française, ça se lance à minuit heure française au changement de jour et le problème est réglé. Mais au changement d'heure, vu que UTC ne change pas, on aura plus 2 heures de décalage mais une seule. J'ignore comment faire pour que ce soit le moins casse tête possible.


- J'utilise parfois NOW() dans mes requêtes Sql. Je peux changer ça et utiliser (NOW() + INTERVAL 2 HOUR) mais comment gérer ça vu que parfois ce ne sera pas + 2 heures mais à priori une heure une fois qu'on sera retourné en heure d'hiver ?

Merci d'avance

1 réponse

yg_be Messages postés 22915 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 juillet 2024 1 481
1 juil. 2024 à 16:17

bonjour,

Pour ton second problème, moi je n'utiliserais pas le NOW SQL, je calculerais plutôt le moment en PHP, et j'utiliserais ce moment calculé dans la requête SQL.

Une autre façon de faire, ce serait d'enregistrer des moments UTC dans la base de données, plutôt que des moments en heure locale.  La conversion se ferait lors des interactions avec l'utilisateur.

0
cocodu67... Messages postés 3156 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 2 juillet 2024 145
2 juil. 2024 à 09:25

Bonjour,

Pour que ça fasse plus propre j'avais toujours utilisé NOW() mais en effet PHP permet très facilement d'obtenir la date et l'heure au même format que NOW().

Concernant les tâches cron qui doivent s'exécuter à un moment précis, j'ai une idée. Si une tâche doit se lancer le 1 du mois à 00h01 il est possible de la lancer chaque heure tous les jours et de vérifier en PHP (qui aura l'heure française) quand est-ce que le jour sera 1 et l'heure 0 et la minute 1, de mettre tout le code entre accolades et de vérifier avec un if si le moment est venu et de n'exécuter l'intérieur de la condition if que si c'est le bon jour et la bonne heure. Cela fait beaucoup d’exécutions inutiles mais bon ...

0
yg_be Messages postés 22915 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 juillet 2024 1 481 > cocodu67... Messages postés 3156 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 2 juillet 2024
2 juil. 2024 à 11:31

Concernant les tâches cron, j'enregistrerais dans la base de données le moment de la prochaine exécution, pour se protéger contre les changements d'heure et pour gérer les situations où le serveur est arrêté pendant un certain temps. 

0
cocodu67... Messages postés 3156 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 2 juillet 2024 145 > yg_be Messages postés 22915 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 juillet 2024
2 juil. 2024 à 14:55

Excusez moi mais est-ce possible de m'expliquer dans quelle situation il peut y avoir un problème si l'heure d'exécution est indiquée dans le code PHP ?

0
yg_be Messages postés 22915 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 juillet 2024 1 481 > cocodu67... Messages postés 3156 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 2 juillet 2024
2 juil. 2024 à 15:09

Au changement de saison, quand l'heure revient en arrière, il y a la possibilité d'exécuter deux fois une tâche.

Si le serveur s'arrête quelques heures et redémarre, il est sans doute utile d'exécuter les tâches qui auraient dû s'exécuter pendant l'arrêt.

0
cocodu67... Messages postés 3156 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 2 juillet 2024 145 > yg_be Messages postés 22915 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 juillet 2024
2 juil. 2024 à 15:31

Ah oui c'est vrai que si on retire une heure elle va s'exécuter deux fois. Dans mon cas ce n'est pas grave mais dans d'autres situations ça peut surement amener pas mal de problèmes.

En effet si le serveur s'arrête un moment et que la cron quotidienne ne s'est pas lancée il y a des choses qui risquent de ne pas fonctionner comme prévu.

Je vous remercie pour vos conseils.

0