2012-03-06 3 views
4

좋아, 무슨 일이 일어나고 있는지 파악할 수 없어서 사람들에게 물어보기로했습니다.Java Timestamp와 PHP Timestamp가 두 번 다른 시간을 알려줍니다.

long timestamp = System.currentTimeMillis()/1000; 
: 예를 들어,이 뜻은 내가 나에게 UTC 타임 스탬프를 얻을 자바에서이 코드가 나에게 그런 1331065202

을 제공

date_default_timezone_set("UTC"); 
time() 

: PHP에서이 코드를 사용하여 UTC 타임 스탬프를 잡아하고

이것은 예를 들어 나에게 줄 것이다 1331093502

왜 2 번 그렇게 다른가? 둘 다 UTC 시간대에 있어야하지 않습니까? 아니면 제가 잘못한 게 있습니까? 나는 VPS에서 호스팅되며 이러한 스크립트는 2 개의 다른 서버에 있으므로 서버 쪽에서 뭔가있을 수 있습니까? 그렇다면 무엇을 할 수 있습니까?

답변

4

두 개의 값이 이고 크게 (시간도 정수가 아님)이 다르기 때문에 기계 중 하나의 시계가 잘못되었다고 말할 수 있습니다. (난 당신이 거의 동시에 두 개의 타임 스탬프를했다 있으리라 믿고있어.) 그 타임 스탬프가

:

  • PHP : 3월 6일 20시 20분 2초 화 GMT 2012
  • 자바 : 수요일 3월 7일 그리니치 표준시 04시 11분 42초 2012

는 GMT에 하지 월 27 일의 것을 감안할 때, 그것은 단순히 잘못 설정되어있는 자바 시스템의 시계처럼 보인다.

완전한 제어권을 가진 진정한 VPS라면 서버의 시계를 올바르게 유지하기 위해 NTP 또는 비슷한 것을 사용해야합니다.

+0

글쎄,이 문제는 게임용 플러그인이라는 것입니다. 이 플러그인은 전세계 여러 서버에서 사용할 수 있습니다. Java가 서버에 연결되어 시간을 확보하게하는 것이 가능하고 리소스가 효율적입니까? 이는 수천 개의 서버에 대해 서버 당 1 분에 한 번 수행됩니다. –

+0

@MarcusKrueger : 모든 서버를 제어하면 모두 NTP 동기화를 실행하고 있는지 확인할 수 있습니다. 그렇습니까?물론 불일치가있을 수 있지만 그다지 커야합니다. –

+0

내 의견을 편집하여 더 많은 데이터를 포함 시켰습니다. 그리고 모든 서버를 제어 할 수는 없었습니다. –

0

이 scrips에 바로 거기, 2 개 개의 다른 서버

단서 거기에있다 : 당신의 두 서버가 서로 다른 시간을 설정합니다.

Java 및 PHP 앱을 동기화해야하는 경우 두 서버 모두 Network Time Protocol을 사용하는 것이 좋습니다.

2

위의 사람들은 이미 썼습니다. ntp를 사용하십시오. VPS가 제어 할 수 있다면 debian/우분투입니다. 다음 쉘 스크립트가이를 설치합니다.

sudo apt-get install ntp 

은 설치 후 NTP 시작하지만 것입니다 당신이 데몬 도움이

/etc/init.d/ntp restart 

희망을 실행하고 있는지 확인하십시오.

관련 문제