Le serveur MySql et Apache restent en heure UTC
Résolucocodu67... Messages postés 3178 Date d'inscription Statut Membre Dernière intervention -
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
- Une erreur applicative s'est produite sur le serveur adelie
- Youtube une erreur s'est produite ✓ - Forum YouTube
- Changer serveur dns - Guide
- Une erreur inattendue s'est produite instagram ✓ - Forum Instagram
- Facebook désolé, une erreur s’est produite :( ✓ - Forum Facebook
- Oups une erreur s'est produite. veuillez réessayer plus tard snapchat - Forum Snapchat
1 réponse
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.
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 ...
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.
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 ?
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.
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.