1

Web サイト用のチャットを構築していて、サーバーとクライアントの間の時間差を計算したいと考えています。次のコードを使用して時差を取得し、非表示の入力フィールドに入れています。しかし、うまくいきません。

<script type = "text/javascript">
var time = new Date().getTime()/1000;
$.post('timediff.php',{time:time},function(response){
    alert(response);
});
</script>

私の timediff.php ファイルには、次のコードがあります。

<?php
if(isset($_POST['time'])){
    $client_time = $_POST['time'];
    $server_time = time();
    $time_diff = $server_time - $client_time;
    echo $time_diff;
}
?>

サーバーと同じ時間設定を持つ別のコンピューターでこれをテストしましたが、得られる結果は大きくなります。私は何か間違ったことをしていますか?これを行うより良い方法はありますか?前もって感謝します。

4

1 に答える 1

0

クライアントとサーバー間のレイテンシーを考慮していますか? それらがまったく同じであっても、応答の処理に 1 ミリ秒以上かかる場合、ゼロではない差が得られます。

編集:getTimezoneOffset() (JavaScript、分を返す) とDateTime::getOffset()(PHP、秒を返す) を 試してください。それは可能getTime()であり、time()タイムゾーンに依存する値を返しています。PHP スクリプトでタイムゾーンを設定していない場合、それも要因になる可能性があります。

PHP でこれを試すこともできます。

echo $client_time."\n".$server_time;

JS と PHP がそれぞれ何時に報告しているかを確認すると便利です。さまざまな理由により、システム時刻とは大きく異なる場合があります。

于 2013-11-09T06:48:57.163 に答える