Вы заметили, что функция date()
работает в 2 раза быстрее, чем обычно, если вы устанавливаете фактический часовой пояс внутри своего скрипта перед любым вызовом date()
? Мне очень любопытно об этом.
Посмотрите на этот простой фрагмент кода:
<?php
$start = microtime(true);
for ($i = 0; $i < 100000; $i++) date('Y-m-d H:i:s');
echo (microtime(true) - $start);
?>
Он просто вызывает функцию date()
, используя цикл for
100 000 раз. Результат, который я получаю, всегда составляет около 1,6 секунды (Windows, PHP 5.3.5), но…
Если я снова установлю тот же часовой пояс, добавив одну абсурдную строку перед запуском:
date_default_timezone_set(date_default_timezone_get());
Я получаю время ниже 800 мс; ~ в 2 раза быстрее (тот же сервер).
Я искал вокруг, чтобы найти какое-либо разумное объяснение такому поведению, но не имел никакого успеха. С моей точки зрения, эта дополнительная строка бесполезна, но PHP со мной не согласен.
Я пробовал этот тест на двух Linux-серверах (разные версии PHP) и получил разное время, но в пропорции ~6:1.
Примечание. Свойство date.timezone в php.ini установлено правильно (Европа/Париж).
Я искал здесь похожие вопросы и не нашел ничего похожего. Я также проверил руководство для функции date_default_time_zone() @ php. net и обнаружил, что я не только один заметил это, но до сих пор не могу понять, почему это происходит?
Кто-нибудь?