IPB

Здравствуйте, гость ( Вход | Регистрация )

Получить точное время от серверов, Можно ли как-то получить время от ваших серверов?
kroncentr
сообщение 22.3.2013, 10:06
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 1
Регистрация: 22.3.2013
Пользователь №: 1967



это нужно для правильного отображения времени на часах на одном моем сайте. В идеале хотелось бы получить результат, который дает javascript объект "new Date()" и с ним работать)

Спасибо!)
Перейти в начало страницы
 
+Цитировать сообщение
 
Начать новую тему
Ответов
Admin
сообщение 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

Удачи!


--------------------


Перейти в начало страницы
 
+Цитировать сообщение
Tsu
сообщение 22.5.2013, 21:50
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 2
Регистрация: 22.5.2013
Пользователь №: 2018



Добрый вечер!

Только учусь программированию, подскажите пожалуйста как это все связать. Не разобрался я, поправьте пожалуйста.

На stratum1.ru Вы выводите время по средствам js timebox, который выполняет роль таймера, правильно? а откуда берутся данные NTP как они используются и самое главное как их правильно вывести?

Извиняюсь за ламерские вопросы rolleyes.gif

Буду очень признателен ответу!
Перейти в начало страницы
 
+Цитировать сообщение

Сообщений в этой теме


Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 18.4.2024, 16:05
Материалы сайта предназначены для лиц 12 лет и старше.
HSDN — Рейтинг сайтов