Часы на сайт php+js
Здравствуйте. Я совсем не силён в фронтенде и прошу помощи. Задача: сделать часы на странице html, которые показывают единое время для всех пользователей. Что сделал: часы на js и php, которые отправляют запрос на сервер каждую секунду и обновляют информацию на странице. Очень хочу сделать так, чтобы запрос был один, а дальше работал скрипт без обращения к серверу, но не могу разобраться из-за не хватки знаний. Спасибо за помощь.
файл php: <?php echo date("G").":".date("i").":".date("s"); ?> файл html: <html> <head> <meta charset="utf-8"> <title>Часы</title> <script> window.onload = server_time; function server_time(){ var req = new XMLHttpRequest(); req.open("GET","data_script.php",true); req.onreadystatechange = function(){ document.getElementById("time_on_site").innerHTML = req.responseText; } req.send(); setTimeout("server_time()", 1000); } </script> </head> <body> <div id="time_on_site"></div> </body> </html> |
|
del
|
del
|
спасибо, но есть одно но. в дальнейшем, при перемещении на другой сервер, либо по каким-то другим причинам, нужно будет вручную новое время задавать. конечно бы хотелось, чтобы оно автоматом работало. Да и потом, я так понимаю, что если закрыть страницу, то при открытии её снова начнётся отсчёт с указанного времени.
|
Цитата:
|
var span = document.querySelector('.time') ;
fn(span, '16:28:41');// fn(span, '%uptime%'); я понял это как: начать время с указанного в этой строчке. если закрыть страницу, что опять стартует с этого времени. возможно я ошибаюсь и это работает не так? |
Цитата:
|
рони,извините, но я туплю уже несколько дней, пытаясь зпихнуть из php время в переменную uptime... может быть дадите совет, что делать или читать.. спасибо
|
ydav-07,
laimas вероятно может подсказать. я могу только гадать. fn(span, '<?php echo date("G").":".date("i").":".date("s"); ?>'); |
спасибо. я так пробовал, но похоже сервер не разрешает таким образом запускать php из страницы, если создавать отдельно файл php на сервере то работает, а если вставлять php код в страницу(скрипт) не работает. попробую обратиться за помощью к laimas. еще раз благодарю
|
Цитата:
Запрос клиентом сервера не означает, что он получит ответ мгновенно, всегда есть задержка, и она может быть и в несколько секунд. Если вы хотите иметь время сервера на клиенте, то не временную метку нужно отдавать клиенту, а смещение часового пояса сервера. У сервера и клиента относительно Гринвича эти смещения с разными знаками. Если сложить смещение часового пояса сервера со смещением часового пояса клиента, то получим положительную или отрицательную разницу. Эту разницу нужно прибавлять к полученной временной метке на клиенте, в результате чего и получится текущая временная метка сервера. |
laimas,
спасибо за подробный ответ. цель - точность в пределах минуты, двух. по работает локально(но в разных подсетях\сетях - источник времени к сожалению у всех отличается) и часовые пояса не меняются. суть проблемы том, что если системное время пользователя уходит от времени сервера 5+/- и более минут, то по начинает беситься. это пока временная мера, пока не исправится баг в по. |
|
спасибо, я решил проблему с вашей помощью. первый пост от вас мне очень помог, немного докрутив я решил проблему.
|
Цитата:
|
это история умалчивает...
|
Часовой пояс GMT +3, время: 05:13. |