Вы заметили, что функция date()
работает 2x быстрее, чем обычно, если вы установили фактический часовой пояс в своем script перед любым вызовом 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 раз. Результат Ive получил всегда 1,6 секунды (Windows, PHP 5.3.5), но...
Если я устанавливаю тот же часовой пояс, добавляя одну абсурдную строку перед запуском:
date_default_timezone_set(date_default_timezone_get());
Я получаю время ниже 800 мс; ~ 2x быстрее (тот же сервер).
Я искал вокруг, чтобы найти разумное объяснение этого поведения, но не имел никакого успеха. С моей точки зрения эта дополнительная строка бесполезна, но PHP не согласен со мной.
Я пробовал этот тест на двух серверах linux (разные версии PHP) и получил разные результирующие времена, но в пропорции ~ 6: 1.
Примечание. Правильно установлено свойство date.timezone в php.ini (Европа/Париж).
Я искал связанные вопросы здесь и не нашел ничего подобного. Я также проверил руководство для date_default_time_zone() function @php.net и обнаружил, что я не только тот, кто это заметил, но все же не может понять, почему это происходит?
Кто-нибудь?