웹마스터 팁
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 같은걸로 되어 있으면 문제가 발생할 소지가 있습니다)
댓글 2
-
Hello_XE
2015.01.07 22:05
-
세상의모든계산기
2015.01.08 00:30
그렇다면
문제가 됐던 위젯 등을 만드신 분이 시간 관련한 함수를 처리함에 있어서
프로그램 < -- > XE <--> DB(SERVER)
이렇게 처리되도록 하지 않고,
프로그램 <--> DB(SERVER)
이렇게 코딩을 하기 때문에
발생하였던 문제라고 볼 수가 있겠군요.
* 코딩하던 환경(개발자 서버)은 KST 적용되는 상황이니 문제가 드러나지 않지만,
유저 환경(사용자 서버)은 KST가 아니다보니 문제가 드러나게 되는 거구요.
대충 이해가 가네요.
제목 | 글쓴이 | 날짜 |
---|---|---|
1.0.3버전 외부 페이지 쿼리 스트링 붙일때 주의 하세요. | 그라미 | 2008.06.03 |
일정 기간이 지난 글에 코멘트 등록 제한 [3] | 老姜君 | 2008.06.03 |
링크 사이트 제작을 위한 어드바이스 - Planning 1 - [7] | Hammer | 2008.06.04 |
링크 사이트 제작을 위한 어드바이스 - Planning 2 - [6] | Hammer | 2008.06.04 |
1.03버전 글쓸때 오류... [1] | 화려한 부활 | 2008.06.05 |
이전글,다음글 얻기 (검색결과 까지 포함) (수정) [8] | 라르게덴 | 2008.06.05 |
2차메뉴 롤오버 위치 변환.. [3] | 봄처녀 | 2008.06.05 |
링크 사이트 제작을 위한 어드바이스 - Fade In MouseOver - [3] | Hammer | 2008.06.06 |
(위젯) 이미지 클라우드 스킨 사용 법 [2] | Simulz | 2008.06.06 |
PHP 폼메일 [9] | 헥토르 | 2008.06.09 |
링크 사이트 제작을 위한 어드바이스 - MouseOver Preview - [6] | Hammer | 2008.06.10 |
설치시 초기화면으로 돌아가는 문제 해결방법 [4] | PICSTORY™ | 2008.06.11 |
☆조회수.추천수 구간에 따른 이미지 나타내기(Hot 등..) - 갤러리게시판&최근이미지위젯☆ [5] | 오기오기 | 2008.06.12 |
페이지 숫자에 네이버처럼 사각테두리 씌우기 [8] | 탑심 | 2008.06.15 |
할수 있다!! 내 맘대로 DB주무르기 ★DB방식 변경★ | 토리세상 | 2008.06.16 |
페이지 작성이나 수정후 적용이 안돼서 고생하는 많은 분들을 위하여 [1] | cyric | 2008.06.17 |
설치후 권한 재조정 [4] | 덱스터 | 2008.06.17 |
썸네일 생성이 되지 않을시 확인할 내용.. [4] | 또나아빠 | 2008.06.17 |
아이프레임속 링크를 기존페이지에서 이동하기 [1] | 정다운804 | 2008.06.19 |
업그레이드 쉽고,안전하게 하기 [5] | wannabewize | 2008.06.21 |
저도 이전에 같은 문제고 고민을 많이 했습니다만....
함수중에 date함수를 쓰는것보다 xe자체내장함수인 zdate를 사용하시면 대부분의 서버시간이 xe설치시 입력하신 timezone의 값으로 자동계산되어 출력됩니다.
잘 몰랐을때는 타임존값을 서버시간과 초기 설치시 입력한 timezone을 db에서 불러와서 차이값을 계산하고 그걸 다시 최종단계에 적용시키는등... 이런작업을 했었는데요 zdate 함수가 매우 유용하더라구요.
저는 xe 내장 zdate 함수로 한방에 모두 해결했어요.