Получить точное время от серверов, Можно ли как-то получить время от ваших серверов? |
Здравствуйте, гость ( Вход | Регистрация )
Получить точное время от серверов, Можно ли как-то получить время от ваших серверов? |
22.3.2013, 10:06
Сообщение
#1
|
|
Новичок Группа: Пользователи Сообщений: 1 Регистрация: 22.3.2013 Пользователь №: 1967 |
это нужно для правильного отображения времени на часах на одном моем сайте. В идеале хотелось бы получить результат, который дает javascript объект "new Date()" и с ним работать)
Спасибо!) |
|
|
26.3.2013, 6:42
Сообщение
#2
|
|
Администратор Группа: Главные администраторы Сообщений: 277 Регистрация: 18.12.2007 Из: Саратов Пользователь №: 1 |
Получать можно по NTP, например запуском команды ntpdate посредством php и парсить результат выполнения команды.
Например так, создав такие функции: Код function query_server($server) { $command = '/usr/sbin/ntpdate -t 0 -qd '.$server; if (!$output = run_command($command)) { return FALSE; } preg_match("/stratum ([\d]+),/s", $output, $stratum); preg_match("/originate timestamp: ([^\n]+)\n/s", $output, $timestamp); if (!isset($stratum[1]) OR !isset($timestamp[1]) OR $stratum[1] == 0) { return FALSE; } $timestamp = substr(trim($timestamp[1]), 17, -4); return array ( 'stratum' => trim($stratum[1]), 'timestamp' => strtotime($timestamp) ); } function run_command($command) { if (!$fp = popen($command, "r")) { return FALSE; } $buffer = ''; while (!feof($fp)) { $buffer .= fgets($fp, 4096); } pclose($fp); if ($buffer != '') { return $buffer; } return FALSE; } Далее вызвав: Код $result = query_server('ntp2.stratum2.ru'); $js_date = date("M, d Y H:i:s", $result['timestamp']); И уже использовать $js_date там где нужно в HTML, например так: Код ... <script type="text/javascript" language="javascript"> <!-- var TimeLocal = new Date(); var TimeNTP1 = new Date("<?php echo $js_date ?>"); //--> </script> ... Скрипт реализации самих часов на JS можно посмотреть тут. Используется он на странице http://www.stratum1.ru Удачи! -------------------- |
|
|
22.5.2013, 21:50
Сообщение
#3
|
|
Новичок Группа: Пользователи Сообщений: 2 Регистрация: 22.5.2013 Пользователь №: 2018 |
Добрый вечер!
Только учусь программированию, подскажите пожалуйста как это все связать. Не разобрался я, поправьте пожалуйста. На stratum1.ru Вы выводите время по средствам js timebox, который выполняет роль таймера, правильно? а откуда берутся данные NTP как они используются и самое главное как их правильно вывести? Извиняюсь за ламерские вопросы Буду очень признателен ответу! |
|
|
31.5.2013, 7:20
Сообщение
#4
|
|
Администратор Группа: Главные администраторы Сообщений: 277 Регистрация: 18.12.2007 Из: Саратов Пользователь №: 1 |
Выше был приведен php скрипт, позволяющий брать данные с NTP-сервера (скрипт работает только на UNIX операционной системе).
Ответ от скрипта - строка в формате UNIX TIMESTAMP, которую посредством php функции date() приводят в вид, понятный для JS. Далее создается объект var TimeNTP1 = new Date(x), и вместо x подставляется ответ от функции date(), как показано выше. Таким образом, объект TimeNTP1 будет содержать время, полученное с NTP-сервера. И его можно будет использовать в вашем JS приложении. -------------------- |
|
|
4.6.2013, 19:49
Сообщение
#5
|
|
Новичок Группа: Пользователи Сообщений: 2 Регистрация: 22.5.2013 Пользователь №: 2018 |
Спасибо большое! разобрался.
Но возникла такая ситуация, что функция popen() закрыта хостером, без нее каким-либо способом можно обойтись? Заранее спасибо! |
|
|
5.6.2013, 21:14
Сообщение
#6
|
|
Администратор Группа: Главные администраторы Сообщений: 277 Регистрация: 18.12.2007 Из: Саратов Пользователь №: 1 |
Спасибо большое! разобрался. Но возникла такая ситуация, что функция popen() закрыта хостером, без нее каким-либо способом можно обойтись? Заранее спасибо! Существуют аналогичные функции, такие как: shell_exec(), exec() и обратные кавычки, вида $ret = `команда`;. Однако, если хостер закрыл функцию popen(), наверняка и остальные функции по работе с процессами - также закрыты. В вашем случае скорее всего придется работать напрямую с NTP-протоколом на php. Например, на основе клссса https://github.com/majetzx/ntplite или аналогичного. Конечно, этот метод потребует определенных знаний в области протокола NTP и сокетов php. -------------------- |
|
|
13.8.2013, 20:53
Сообщение
#7
|
|
Новичок Группа: Пользователи Сообщений: 1 Регистрация: 13.8.2013 Пользователь №: 2080 |
Помогите пожалуйста, очень нужно установить часы с синхронизацией с сервера, я не пойму какой код в какой файл, честно скажу все понимаю кроме php, какие файлы залить на хостинг, чтобы часы работали, и как вызвать $result & $js_date в коде с помощью какого файла, или же прописать команду на хостинге. PLEASE
|
|
|
15.8.2013, 0:49
Сообщение
#8
|
|
Администратор Группа: Главные администраторы Сообщений: 277 Регистрация: 18.12.2007 Из: Саратов Пользователь №: 1 |
Без знания и понимания php данную задачу решить не сможете.
-------------------- |
|
|
23.2.2015, 1:57
Сообщение
#9
|
|
Новичок Группа: Пользователи Сообщений: 1 Регистрация: 10.2.2015 Из: land Пользователь №: 3210 |
а не подскажите как ставится библиотека?И что это такое?
-------------------- .
|
|
|
24.2.2015, 15:11
Сообщение
#10
|
|
Администратор Группа: Главные администраторы Сообщений: 277 Регистрация: 18.12.2007 Из: Саратов Пользователь №: 1 |
а не подскажите как ставится библиотека?И что это такое? В этом посте я рассказывал как использовать данную библиотеку для получения Timestamp с NTP-сервера: http://forum.hsdn.org/index.php?s=&sho...post&p=2205 -------------------- |
|
|
Текстовая версия | Сейчас: 14.10.2024, 10:57 |