Heim >Datenbank >MySQL-Tutorial >Wie kann ich die Zeitzonen von PHP und MySQL in meiner Webanwendung synchronisieren, ohne die Serverkonfigurationen zu ändern?
Zeitzonen in PHP und MySQL synchronisieren
In Webanwendungen ist der genaue Umgang mit Datums- und Uhrzeitwerten über verschiedene Zeitzonen hinweg von entscheidender Bedeutung. Allerdings können die Standard-Zeitzoneneinstellungen von PHP und MySQL unterschiedlich sein, was zu Diskrepanzen bei der Datumsberechnung führen kann. Dieser Artikel untersucht die Herausforderungen beim Festlegen von Zeitzonen in PHP und MySQL und bietet eine umfassende Lösung ohne Änderung der Serverkonfigurationen.
Das Dilemma: Unterschiedliche Zeitzonen
Bei Verwendung des PHP-Datums ()-Funktion, wie etwa date('Y-m-d H:i:s'), wird die PHP-Zeitzoneneinstellung angewendet. Umgekehrt verwendet die NOW()-Funktion von MySQL die Zeitzoneneinstellung des MySQL-Servers. Diese Nichtübereinstimmung kann zu falschen Datumsvergleichen und -berechnungen führen.
Fehlgeschlagene Versuche
Der Entwickler hat zuvor verschiedene Methoden ausprobiert, um die Zeitzone zu ändern, darunter:
Lösung: Synchronisierung
Um die PHP- und MySQL-Zeitzonen innerhalb der Anwendung zu synchronisieren, wird folgende Vorgehensweise empfohlen:
1. PHP-Zeitzonenkonfiguration
<code class="php">define('TIMEZONE', 'Europe/Paris'); date_default_timezone_set(TIMEZONE);</code>
Definieren Sie eine konstante ZEITZONE und verwenden Sie diese, um die Standardzeitzone für PHP festzulegen.
2. MySQL-Zeitzonenberechnung
<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);
Berechnen Sie den Versatz zwischen der Serverzeit und der gewünschten Zeitzone.
3. MySQL-Zeitzoneneinstellung
<code class="php">// Your DB Connection - sample $db = new PDO('mysql:host=localhost;dbname=test', 'dbuser', 'dbpassword'); $db->exec("SET time_zone='$offset';");</code>
Führen Sie eine Abfrage aus, um die MySQL-Zeitzone auf den berechneten Offset festzulegen.
Durch die Implementierung dieser Lösung werden die PHP- und MySQL-Zeitzonen innerhalb der Anwendung synchronisiert , wodurch genaue Datums-/Uhrzeitberechnungen und -vergleiche unabhängig von der Serverkonfiguration gewährleistet werden.
Das obige ist der detaillierte Inhalt vonWie kann ich die Zeitzonen von PHP und MySQL in meiner Webanwendung synchronisieren, ohne die Serverkonfigurationen zu ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!