Руководство PHP указывает, что time()
возвращает & puncsp; " текущая временная метка UNIX " ᴀ & puncsp; и microtime()
возвращает « текущую временную отметку Unix с микросекундами » и «puncsp;» .
Тем не менее, гарантируют ли эти функции поведение, подобное строгим стандартам POSIX.1 ?
В частности, делать прыжки секунд вставлены таким образом, что вывод time()
& hairsp; | & hairsp; microtime()
перепрыгивает назад на 1 секунду в начале следующего дня (это также в конце второй секунды), давая нам повторяющиеся значения возврата – против новых уникальных значений – на протяжении всей первой секунды что на следующий день?
Например, если мы проводим опрос time()
& hairsp; | & hairsp; microtime()
каждые микросекунды на протяжении всего периода 1998 -12 -31 и 1999 -01 -01, было бы два появления каждого значения в диапазоне 915 & hairsp; 148 & hairsp; 800 <= x <915 & hairsp; 148 & hairsp; 801?
PHP – это серверный язык. Функция time () будет решать системное время этого сервера. Если на сервере запущен демон NTP, он будет знать второй уровень и отрегулировать его соответствующим образом. PHP не знает об этом, но система делает.
Временная метка UNIX, поскольку вы получаете ее от времени () в PHP, является своеобразным зверем.
Мне понадобилось много времени, чтобы понять это, но случается так, что временная метка увеличивается во время второго прыжка, и когда секунда прыжка заканчивается, временная метка (но не UTC!) Отскакивает назад на одну секунду.
Это имеет некоторые важные последствия:
обходные
Что делать, если временная метка Unix не подпрыгивала и не останавливалась на 2 секунды? Это именно то, что Google сделал для своих серверов. Их решение состояло в том, чтобы медленно перекосить время всего лишь миллисекунды за раз в течение длительного периода времени, чтобы сделать прыжок второй смены практически незаметно для приложений. (Что касается приложений и операционных систем на серверах Google, секундные секунды больше не вставляются IERS .)
time()
просто возвращает отметку времени UNIX. Это означает, что на него не влияют прыжки секунд (и такие), потому что вы никогда не будете «терять» время, просто потому, что кто-то решил это. Возникают только текстовые представления (например, созданные с использованием date()
).