Главная > Бывает > Веб-проекты и перевод времени

Веб-проекты и перевод времени

Забавная случилась ситуация.
Заинсталлил новый сервак, поднял на нем фряху x64 и начал тянуть проекты.
Все работало как часы затем стал проверять cron и обнаружил что совершенно забыл выставить время.
Получилось так, что дата стояла 19ХХ год а время отставало на 2 часа.
Я естественно выставил часовой пояс и проставил время через date на 2 часа вперед.
И началось:)

На одном из вирт-хостов в жэйле, висел форум phpbb3, с него пришел админ и сказал что многие юзера не могут оставить сообщения.
Мол пишет им форум что рано еще, надо подождать 15 секунд со времени прошлого поста.
Там решилось все сбросом значения user_lastpost_time из phpmyadmin.

UPDATE phpbb_users SET user_lastpost_time='0'

Но еще хуже то, что интерфейс webmoney X2 (не буду описывать что это и зачем) сказал мне следующее: «102 не выполнено условие постоянного увеличения значения параметра w3s.request/reqn».
Короче огорчил я коллегу (а день у него и так выдался паршивый, как и у меня) :)
Ринулся было проверять номер трансакции который должен увеличиваться, потом догнал что сказка не о том.

Дело было вот в чем. Стандартная функция формирующая уникальный увеличивающийся номер выглядит так:

$time=microtime();
$int=substr($time,11);
$flo=substr($time,2,5);
return $int.$flo;

Т.е. привязана она к времени. А так как скакнуло оно вперед при установке часового пояса а потом назад, вся маза накрылась медным тазом.
Функция отрабатывала, но значение было не больше предыдущего.
Надо было писать в ТП с просьбой обнулить счетчик, но зная что ответят они черт знает когда а работать все должно как часы, пошел дрючить _GetReqn().

у меня получилось так:

$time=microtime();
$int=substr($time,11);
$int=$int+99991100;
$flo=substr($time,2,5);
return $int.$flo;

и увеличивал число пока все не запахало.

Вывод №1. Будьте внимательнее!
Вывод №2. Будьте внимательнее!
«Следи за собой, будь осторожен» :)

Бывает , , , ,

  1. Jara
    10 Май 2009 из 1:04 | #1

    Забавно :)

  1. Трекбеков пока нет.