dememax: (ночь)
dememax ([personal profile] dememax) wrote2019-12-15 09:12 pm

PHP: ещё одни грабли с time()

Ещё одни грабли со встроенной функцией PHP.
Точность: целые секунды.
Эффект следующий:
  1. из теста перед вызовом кода на PHP делаем time() - T0;
  2. вызываем код на PHP, в котором происходит сохранение значения из time() - T1;
  3. после возврата из кода PHP в тесте снова вызываем time() - T2;
  4. сравниваем значения, должно быть T0 <= T1 <= T2
Так вот, иногда это ломается, получается, что T0 > T1. FAIL!!!
Надо сказать, что на последней версии PHP это не проявляется, а на старой, что у нас на сервере - очень даже часто. :-(

Нашел комментарий с кодом, как воспроизвести проблему:
https://www.php.net/manual/en/function.time.php#122711

Что ж, пришлось заодно переписывать в PHP реализацию на микросекунды.

Ну и осталось мне рассказать про ещё одну проблему, с которой я в PHP встретился, но это - потом.

Кстати, а вы знали, что LLeo (Леонид Каганов — российский писатель-фантаст, поэт и сценарист, юморист, телеведущий, политик — как называет его Вики) - "на пыхпыхе для себя мелкие утилиты пишут"?
juan_gandhi: (Default)

Re: Что заставляет человека писать на PHP, я не понимаю.

[personal profile] juan_gandhi 2019-12-15 09:35 pm (UTC)(link)
Ему можно.