2012-03-06 14 views
4

まあ、私は何が起こっているのかわからないので、私はあなたに頼むことにしました。JavaタイムスタンプとPHPタイムスタンプは2つの異なる時間を与えます

long timestamp = System.currentTimeMillis()/1000; 
:例えばこの意志は私が私のUTCタイムスタンプを取得するためのJavaでこのコードを持っている私に続い1331065202

を与える

date_default_timezone_set("UTC"); 
time() 

:PHPで私はこのコードを使用してUTCタイムスタンプをつかんでいます

これは、例えば、私に与えるでしょう1331093502

なぜ2倍異なるのですか?どちらもUTCのタイムゾーンに入っていてはいけませんか、何か間違っていませんか?私はVPSでホストされています。これらのスクリプトは2つの異なるサーバーにありますので、サーバー側で何かできることがあります。もしそうなら、私は何ができますか?

答えて

4

2つの値がと大きくは異なっているとすれば、いずれかのマシンのクロックが間違っていると思います。 (私はあなたがほとんど同時に2つのタイムスタンプを取ったと仮定しています。)

これらのタイムスタンプは次のとおりです。

  • PHP:火3月6日20時20分02秒GMT 2012
  • のJava:水曜日3月7日4時11分42秒GMT 2012

それはGMTにない月27日だということを考えると、それは単に間違って設定されているJavaマシン上の時計のように見えます。

あなたが完全な制御権を持っている真のVPSなら、サーバの時計を正しく維持するためにNTPなどを使って調べるべきです。

+0

これはゲーム用のプラグインであるという問題があります。このプラグインは、世界中の多くの異なるサーバーで使用できます。 Javaがサーバーに接続して時間を奪うだけで、リソースが効率的になりますか?これは、おそらく数千台のサーバーの場合、1分ごとに1回行われます。 –

+0

@MarcusKrueger:もしあなたがすべてのサーバをコントロールしていれば、それらがすべてNTP同期を実行していることを確認できますか?もちろん、まだ矛盾があるかもしれませんが、それほど大きくすべきではありません。 –

+0

コメントを編集してより多くのデータを追加しました。そして、私はすべてのサーバーを制御することはできません。 –

0

これらのscripsはすぐそこに、2台の異なるサーバ

手がかりがあります上にある:あなたの2台のサーバーが異なる時間が設定されています。

JavaとPHPのアプリケーションを同期させる必要がある場合は、両方のサーバーでNetwork Time Protocolを使用することを検討してください。

2

上記のように既に書いています。 ntpを使用します。 VPSがあなたの管理下にあり、debian/ubuntuの場合。以下のシェルスクリプトがそれをインストールします。

sudo apt-get install ntp 

これは、インストール後にNTPを開始しますが、役に立てば幸いデーモンが

/etc/init.d/ntp restart 

を実行していることを確認したい場合。

関連する問題