Задать вопрос
@Mikhri

Компьютер, независимо от ОС, живет по UTC, наплевав на BIOS-время. А сам BIOS ресетится, если отключить питание ПК (CR2032 менял трижды). Есть идеи?

Началось всё с того, что обнаружил: php-функция time() выдает мне не системное время, как должна была бы, а чистый UTC, хотя я на +2.
Т.е. вывод time() в системе соответствует тому, что говорит unixtimestamp.com в The Current Unix Timestamp. Хотя в системе везде установлен UTC+2, и BIOS-время ему тоже соответствует.

Я по-разному игрался сначала с настройками системы (Windows 10): включал/отключал автосинхронизацию и менял ее серверы, по-всякому извращался с часовыми поясами и просто отрубал всю автоматику, задавая дату/время вручную.
Нифига.

Я уж было подумал, что проблема в настройках сервера или самого php.

Но потом вспомнил, что глюки времени у меня были ещё на Windows 7. И даже когда нужен был Linux, у меня в Mint тоже косяки со временем были: скакало, если правильно помню, на 2 или 3 часа, причем в будущее.

Т.е. проблема не в системе точно, а где-то на околожелезном уровне.

Ещё есть момент: при отключении питания сбрасываются настройки BIOS, в т.ч. время.
И три подряд замены батарейки эту проблему не решили.
Возможно, это как-то связано.

В остальном машина прекрасно себя чувствует. При этом мне из функций системного времени достаточно, чтобы оно корректно отображалось в углах мониторов (автосинхронизация решает эту проблему самостоятельно), а отключение питания и сброс BIOS мне не страшны, т.к. подключен через ИБП.

Т.е. баг особо жить не мешает.

Но интересно докопаться до сути.

Какие есть идеи?
  • Вопрос задан
  • 365 просмотров
Подписаться 1 Сложный Комментировать
Решения вопроса 1
@nehrung
Не забывайте кликать кнопку "Отметить решением"!
Надо (не побоюсь этого слова) измерить ток, потребляемый системными часами от таблетки 2032. Прямо вот так взять мультиметр, настроить его на измерение микроамперов, и включить в разрыв проводов, которыми подсоединена эта таблетка, вытащенная из своего гнезда. Наличие описанной в вопросе проблемы будет подтверждено, если этот ток равен нулю.
Но тут есть нюанс: штатный потребляемый ток от 2032 очень мал (мизерные доли микроампера), и не всякий мультиметр достоверно отличит его от нуля - ток может оказаться ниже порога чувствительности прибора или его ошибки измерения.
Одной из причин непотребления тока может быть отсутствие (банальная утеря) перемычки на материнке, с помощью которой сбрасываются настройки BIOS/часов. Если перемычки на материнке не подписаны, то найти её может помочь чертёж в техническом описании этой материнки.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
Slayer_nn
@Slayer_nn
Гугол, памаги!
Ещё есть момент: при отключении питания сбрасываются настройки BIOS, в т.ч. время.
И три подряд замены батарейки эту проблему не решили.
Возможно, это как-то связано.


Да хоть с вытащенной батарейкой. Пока не вытащишь кабель питания из розетки биос должен сохранять свои настройки.
А раз батарейку вы меняли трижды, то да, где-то в линии что-то не работает
Надо прозванивать. Сходу не получится определить время

Решить проблему со временем можно, добавив в планировщике задачу на синхронизацию
во время запуска пк, входя пользователя и т.д.
А вот с настройками bios такое не прокатит
Ответ написан
Комментировать
@kisaa
Убунты (или другого подобного) второй системой нет? Она по умолчанию хранит железные часы в UTC, и при перезагрузке из одной системы в другую будет подобный скачок.
Конечно, если время всегда сбрасывается на 00:00 1 января, то проблема где-то в железе.
Ответ написан
@VT100
Embedded hardware & software.
Не затесался-ли в раздел реестра "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" ключик RealTimeIsUniversal?
Ответ написан
Вы хотя бы в документацию заглядывали? https://www.php.net/manual/ru/function.time.php

time как раз и возвращает время в unix time, которое не привязано к зонам.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы