Я заметил, что включение записи browscap.ini в файле php-cli.ini увеличивает время запуска php
[browscap]
browscap = /etc/browscap.ini
time php -r 'echo "Hello\n";'
Hello
real 0m1.709s
user 0m1.358s
sys 0m0.348s
**** против ниже ****
[browscap]
;browscap = /etc/browscap.ini
time php -r 'echo "Hello\n";'
Hello
real 0m0.041s
user 0m0.029s
sys 0m0.011s
Теперь я знаю, что php ищет файл browscap.ini, когда вызывается такая функция, как get_browser (). Я могу понять отставание, если такая функция используется.
Я не думаю, что php будет загружать данные browscap.ini (которые могут быть большими) в память при каждом запуске. Но почему огромная задержка запуска php?
Может быть, он пытается проверить, существует ли файл browscap.ini при каждом запуске или какой-либо другой проверки? Не удалось найти ничего в документации php.
Так почему же огромная разница во времени запуска php?
PHP загружает всю свою конфигурацию (включая browscap.ini) при запуске, которая в CLI каждый раз, когда вы вызываете php
, Неважно, если вы не позвоните get_browser()
в вашем сценарии, даже если вы дадите php
нет сценария для интерпретации вообще; в любом случае browscap будет загружен, если файл конфигурации скажет так. Причина, по которой разница во времени запуска заметна, в том, что типичный browscap.ini обычно относительно велик.
Вот несколько результатов, полученных на моей машине с использованием файлов разных размеров и простых php -v
:
Других решений пока нет …