За последние 24 часа нас посетили 17886 программистов и 1719 роботов. Сейчас ищут 960 программистов ...

Разное время системы и php запрса

Тема в разделе "Прочие вопросы по PHP", создана пользователем toherman, 26 окт 2014.

  1. toherman

    toherman Новичок

    С нами с:
    26 окт 2014
    Сообщения:
    4
    Симпатии:
    0
    Используемая ОС FreeBSD 9.x
    Проблема выглядит следующим образом.
    В системе установлена тайм-зона Европа/Москва
    Время синхронизируется с timeserver.ru, т.е. постоянно более-менее точное, в терминале отображается соответствующее действительному.
    Но при PHP запросе
    Код (Text):
    1. echo(DATE('День: D, Время: Hч.iмин., Дата d F Y '));
    На странице получаю смещение на -1 час.

    Пожалуйста, подскажите причину такого разброса во времени.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    недавно часы перевели
     
  3. toherman

    toherman Новичок

    С нами с:
    26 окт 2014
    Сообщения:
    4
    Симпатии:
    0
    Не думаю, что это есть причина, т.к. системное время я тоже перевел и синхронизировал, "апач" перезапустил, "ребут" системы тоже не дал результата.
    Вопрос в причине разницы системного времени и времени отображаемом при обращении к странице с указанным выше запросом.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    А ты уверен, что у тебя там всякие файлики зон правильно обновлены? А то может оно на уровне системы косячит? Сколько времени в консоли пишет?
     
  5. toherman

    toherman Новичок

    С нами с:
    26 окт 2014
    Сообщения:
    4
    Симпатии:
    0
    Прошу, читайте внимательно, дабы не раздувать тему. В консоли системное время в полном порядке, отображается корректным. Время искажается при выводе на странице, через PHP...
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    консоль ≠ php
    — ваш К.О.

    пыха вычисляет локальное время по своим "понятиям"
     
  7. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    что именно означает в консоли? консольная тулза вывода времени? ну она должна показывать то что в настройках системы задано. или консольный пхп? ну так консольный и веб-пхп имеют разную конфигурацию и где-то могла затесаться ошибка.

    и еще раз в сторону того что игорь сказал - проверьте определения зон. у нас в россии какая нога зачесалась так часы и переводим. ментейнерам (по всему миру) лишь остается писать дифинишны а сисадминам (по всему миру) ставить обновления. у вас последний этап может быть упущен.
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    $ php -r "date_default_timezone_set('Asia/Yekaterinburg'); echo date('Y-m-d H:i:s');"
    вывелось время, отличающееся на 1 час от реального
    $ sudo apt-get update
    $ sudo apt-get upgrade

    Setting up tzdata (2014h-0wheezy1)

    $ php -r "date_default_timezone_set('Asia/Yekaterinburg'); echo date('Y-m-d H:i:s');"
    вывелось реальное время
     
  9. toherman

    toherman Новичок

    С нами с:
    26 окт 2014
    Сообщения:
    4
    Симпатии:
    0
    Вот PHP сравнивающий тайм-зону установленную в нем и php.ini
    Код (Text):
    1. date_default_timezone_set('Europe/Moscow');
    2.  
    3. $script_tz = date_default_timezone_get();
    4.  
    5. if (strcmp($script_tz, ini_get('date.timezone'))){
    6.     echo 'Временная зона скрипта отличается от заданной в INI-файле.';
    7. } else {
    8.     echo 'Временные зоны скрипта и настройки INI-файла совпадают.';
    9. }
    Временная зона совпадает. В системе тоже установлена тайм-зона Europe/Moscow, но время разбегается.
    Что в PHP может влиять на разброс времени?

    Добавлено спустя 10 минут 54 секунды:
    Разобрался в причине такого разнобоя.
    Дело оказалось в определении тайм-зоны в FreeBSD.
    Если рассуждать логически, то если часовой пояс совпадает с Москвой, то он должен быть Moscow+00,
    но только не в этой системе, что бы время сошлось пришлось установить часовой пояс со сдвигом на час(Moscow-01) назад и отредактировать время в консоли.
    Тема получилась не про PHP, по этому лучше её удалить.
    Огромная благодарность за помощь.
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    биос время должно быть в utc. оно одно на всем земном шарике. система должна принять всего одну опцию - офсета от ютиси. и всё. факт того что пришлось москву минус час делать говорит о том что либо ютиси вы не используете либо что не обновлен пакет tzdata под последний указ президента.
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Сегодня был такой косяк на серваках. обновили как artoodetoo советовал. косяк ушел. КОСЯК УХОДИ!

    [​IMG]
     
  12. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    теме up!

    обнаружил, что мой cygwin тоже страдает от перехода на зимнее время. консольная date выдала неправильное время.
    казалось бы он работает поверх винды, которая уже в курсе. НО! у него свои описатели часовых поясов.

    в cygwin, насколько я понял, обновления по нашей проблеме не было, но структура tzdata используется та же самая, что в linux. поэтому я тупо скопировал описатели с линукса в цыгвин:
    Код (Text):
    1. $ echo $TZ
    2. Asia/Yekaterinburg
    3. $ cd /usr/share/zoneinfo/Asia
    4. $ scp artoodetoo@mylinuxbox:/usr/share/zoneinfo/Asia/Yekaterinburg .
    date стал выдавать правильные цифры :)