Synchronisation des fuseaux horaires dans PHP et MySQL
Dans les applications Web, il est crucial de gérer avec précision les valeurs datetime dans différents fuseaux horaires. Cependant, les paramètres de fuseau horaire par défaut de PHP et MySQL peuvent différer, entraînant des divergences dans les calculs de dates. Cet article explore les défis liés à la définition des fuseaux horaires dans PHP et MySQL et fournit une solution complète sans modifier les configurations du serveur.
Le dilemme : différents fuseaux horaires
Lors de l'utilisation de la date de PHP (), telle que date('Y-m-d H:i:s'), le paramètre de fuseau horaire PHP est appliqué. À l'inverse, la fonction NOW() de MySQL utilise le paramètre de fuseau horaire du serveur MySQL. Cette inadéquation peut entraîner des comparaisons et des calculs de dates incorrects.
Tentatives infructueuses
Le développeur a déjà essayé diverses méthodes pour modifier le fuseau horaire, notamment :
Solution : Synchronisation
Pour synchroniser les fuseaux horaires PHP et MySQL au sein de l'application, l'approche suivante est recommandée :
1. Configuration du fuseau horaire PHP
<code class="php">define('TIMEZONE', 'Europe/Paris'); date_default_timezone_set(TIMEZONE);</code>
Définissez un TIMEZONE constant et utilisez-le pour définir le fuseau horaire par défaut pour PHP.
2. Calcul du fuseau horaire MySQL
<code class="php">$now = new DateTime(); $mins = $now->getOffset() / 60; $sgn = ($mins < 0 ? -1 : 1); $mins = abs($mins); $hrs = floor($mins / 60); $mins -= $hrs * 60; $offset = sprintf('%+d:%02d', $hrs*$sgn, $mins);
Calculez le décalage entre l'heure du serveur et le fuseau horaire souhaité.
3. Paramètres du fuseau horaire MySQL
<code class="php">// Your DB Connection - sample $db = new PDO('mysql:host=localhost;dbname=test', 'dbuser', 'dbpassword'); $db->exec("SET time_zone='$offset';");</code>
Exécutez une requête pour définir le fuseau horaire MySQL sur le décalage calculé.
En implémentant cette solution, les fuseaux horaires PHP et MySQL au sein de l'application seront synchronisés , garantissant des calculs et des comparaisons datetime précis quelles que soient les configurations du serveur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!