웹마스터 팁
timezone (타임존) 관련한 문제 (SERVER, DBMS, PHP, XE)
2015.01.07 21:22
타임존 관련하여 약간의 삽질을 겪고 나서 팁을 올립니다.
대부분의 중요 기능에서는 시간관련하여 문제가 없었지만,
일부 위젯 및 레이아웃의 일부 기능에서 시간 관련 오작동이 일어났습니다.
(다른 기능은 다 잘 되는데 카운터만 12시 땡 쳤는데 리셋이 안된다거나,
회원 가입일이 약간 안맞는 느낌이 든다거나... 그런 경우입니다)
XE 내부에서 무슨 일이 일어나는지 잘 모르다보니,
그냥 하나씩 때려잡아서 잡히면 넘어가는 식으로 해결을 보았지만,
좀 지저분하게 끝난 것 같아서 찜찜하네요.
보다 깔끔하게 정리하는 방법이 있을 것도 같습니다.
본론으로 들어가서
0. 타임존 관련하여 살펴보아야 할 것은 총 4가지 입니다.
ⓐ Server ⓑ MySQL ⓒ PHP ⓓ XE
1. 본인이 서버를 운영하지 않는 경우라면
ⓐ~ⓒ 는 바꿀 수가 없습니다(99.99%).
ⓓ 의 관리자 페이지에서 타임존 설정하여 문제를 해결하거나,
코드를 일일이 수정하여 사용하는 방법 뿐입니다.
가급적 그냥 넘어가는 편이 좋습니다.
2. 본인이 서버를 운영하는 경우라면
ⓐ~ⓒ 를 바꾸어 문제를 해결할 수도 있습니다.
2-1. 우선 각각 어떤 시간설정이 되어 있는지 확인을 하세요.
2-1-1 서버 :
prompt > date
2-1-2 MySQL :
MariaDB [mysql]> show variables like "%time_zone"; 혹은 select now();
2-1-3 PHP
phpinfo(); 에서 date.timezone 확인 혹은 php.ini 파일에서 date.timezone 확인
2-1-4 XE
관리자 페이지 - 설정 - 일반 - 현재 표준시 확인
문제가 발생하고 있다면 이것들의 설정이 서로 다르기 때문입니다.
물론... 원래는 설정이 다르다고 해서 엔드유저에게 이것 때문에 문제가 생겨서는 안됩니다.만...
실제로는 그런 일이 일어나네요. ㅎㅎ
2-2. 해결 방향의 모색
여기가 문제인데...
어떤것을 기준으로 해서 문제를 해결하는게 맞는건지 저도 잘 모르겠습니다.
최선은
ⓐ~ⓒ 모두 UTC를 표준으로 동일하게 세팅하고, ⓓ 부분만 KST로 변경하여
서버 관리자는 UTC를 사용하고
웹 사용자는 KST(한국시간)을 적용받는 방식인것 같습니다.
차선은
ⓐ~ⓓ 모두다 KST를 적용하여 세팅하는 것입니다.
(데이터가 주로 국내에서만 돌고도는 경우라면 이것도 나쁘지 않을 듯)
최선이든 차선이든 ⓐ~ⓒ가 통일되면,
기본적인 문제해결은 끝이 난 것이라고 봐야되고,
db 날자를 일괄 수정하거나 하는 작업은 추가로 필요할 수도 있고,
필요 없을 수도 있습니다. (이게 더 중요한 문제일지도... -_-;)
3. TIP
이런 문제가 발생하지 않는 가장 좋은 방법은
서버 세팅 초반 ⓑ~ⓒ PHP, DBMS 등 설치 전에
ⓐ 시스템 타임존을 UTC나 KST로 바꾸는 것입니다.
(EST 같은걸로 되어 있으면 문제가 발생할 소지가 있습니다)