집 >데이터 베이스 >MySQL 튜토리얼 >서버 구성을 수정하지 않고 웹 애플리케이션 내에서 PHP와 MySQL의 시간대를 어떻게 동기화할 수 있습니까?
PHP와 MySQL의 시간대 동기화
웹 애플리케이션에서는 다양한 시간대에 걸쳐 날짜/시간 값을 정확하게 처리하는 것이 중요합니다. 그러나 PHP와 MySQL의 기본 시간대 설정이 다를 수 있으므로 날짜 계산에 불일치가 발생할 수 있습니다. 이 기사에서는 PHP와 MySQL 모두에서 시간대를 설정할 때 발생하는 문제를 살펴보고 서버 구성을 수정하지 않고도 포괄적인 솔루션을 제공합니다.
딜레마: 다른 시간대
PHP 날짜를 사용할 때 () 함수(예: date('Y-m-d H:i:s'))에는 PHP 시간대 설정이 적용됩니다. 반대로, MySQL의 NOW() 함수는 MySQL 서버의 시간대 설정을 사용합니다. 이러한 불일치로 인해 잘못된 날짜 비교 및 계산이 발생할 수 있습니다.
시도 실패
개발자는 이전에 다음을 포함하여 시간대를 변경하기 위해 다양한 방법을 시도했습니다.
해결책: 동기화
애플리케이션 내에서 PHP와 MySQL 시간대를 동기화하려면 다음 접근 방식을 권장합니다.
1. PHP 시간대 구성
<code class="php">define('TIMEZONE', 'Europe/Paris'); date_default_timezone_set(TIMEZONE);</code>
상수 TIMEZONE을 정의하고 이를 사용하여 PHP의 기본 시간대를 설정합니다.
2. 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);
서버 시간과 원하는 시간대 사이의 오프셋을 계산합니다.
3. 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>
MySQL 시간대를 계산된 오프셋으로 설정하는 쿼리를 실행합니다.
이 솔루션을 구현하면 애플리케이션 내의 PHP와 MySQL 시간대가 동기화됩니다. , 서버 구성에 관계없이 정확한 날짜/시간 계산 및 비교를 보장합니다.
위 내용은 서버 구성을 수정하지 않고 웹 애플리케이션 내에서 PHP와 MySQL의 시간대를 어떻게 동기화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!