2013-11-09 5 views
1

Я создаю чат для своего сайта, и я хочу рассчитать разницу во времени между сервером и клиентом. Я использую следующий код, чтобы получить разницу во времени и поместить его в скрытое поле ввода. Но это не сработает.PHP: вычисление разницы во времени между сервером и клиентом

<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; 
} 
?> 

Я испытал это на другом компьютере, который имеет то же самое время установки в качестве сервера, но результат, который я получаю больше. Я что-то делаю неправильно? Есть ли лучший способ сделать это? Заранее спасибо.

ответ

0

Зависит ли вы от задержки между клиентом и сервером? Даже если они одно и то же, если для обработки ответа требуется> 1 мс, вы получите ненулевую разницу.

EDIT: Попробуйте getTimezoneOffset() (JavaScript, возвращает минуты) и DateTime::getOffset() (PHP, возвращает секунду). Возможно, getTime() и time() возвращают зависящие от времени значения. Если вы не задали часовой пояс в своем PHP-скрипте, это также может быть фактором.

Вы также можете попробовать это в PHP:

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

Это может быть полезно, чтобы увидеть, что время JS и PHP каждый отчетности; он может сильно отличаться от системного времени по ряду причин.

+0

это два разных компьютера .. и оба имеют одинаковые настройки времени, но результат, который я получаю, равен 40 000 секунд. – user1763032

+0

Есть ли вероятность, что это примерно 43,200 секунд? Это будет ровно полдня, и это то, что вы ожидаете, если подумаете, скажем, 12:51 A.M. и один думает, что это 12:51 P.M. –

+0

48,533, если быть точным .. – user1763032

Смежные вопросы