2013-06-04 7 views
-3

There - это простой код javascript для создания часов на основе времени сервера. В начале они проверяют время сервера через php, а затем просто повышают его значение с помощью js +1000. Но если вы на месте больше часов, начните терять точность. Например, когда я нахожусь на сайте 30 минут, есть 5-минутная задержка, и это немного. Есть ли способ решить эту проблему?Как установить время работы сервера?

+3

выполните ping-сервер и получите время на каждый несколько минут и отрегулировать. – epascarello

+0

В отношении вышеизложенного также учитывается время передачи запроса и ответа. – Lloyd

+0

Просто рассчитайте разницу между временем клиента и временем сервера при загрузке и покажите время с этим смещением ... Если ваш клиент случайно меняет время (зоны), я могу жить с неисправными часами при этом точку на некоторое время. – Wrikken

ответ

1

В начале они проверяют время сервера через php, а затем просто повышают его значение с помощью js +1000. Но если вы на месте больше часов, начните терять точность. Например, когда я нахожусь на сайте 30 минут, есть 5-минутная задержка, и это немного.

Это потому, что сценарий создает объект JavaScript Date только один раз, а затем «надеется» на выполнение кода, который добавляет одну секунду к этому объекту каждые 1000 мс - чего не произойдет, потому что браузер занят другие вещи в промежутке, например, управление пользователем (мышь) ввода, прокрутка, что угодно.

Есть ли способ устранить эту проблему?

Сценарий должен создать новый объект Date на каждом цикле, и вычислить разницу между этим и первоначально заданным начальным значением. (Или может быть сочетание обоих, если производительность является серьезной проблемой - создайте новый объект Date каждые x циклов и добавьте x секунд между этими «обновленными» текущими временными метками.)

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