Что лучше php.ini против ini_set()
У меня есть простой вопрос, я должен написать настройку или php.ini
файл или использование ini_set()
в php файле. Что лучше в отношении производительности?
Большое спасибо.
3 ответа
Зависит от вашей цели. php.ini
настройки будут применены ко всем приложениям php по умолчанию, ini_set
изменит настройки php на лету для текущего приложения php.
Если у вас есть вопрос производительности, php.ini
должно быть быстрее, потому что вы пропустите вызов функции ini_set
,
На типичном оборудовании 2018 года ini_set('date.timezone', $timezone)
1000000 раз занимает около 500 мс.
Для PHP 7.1 ini_set()
определенно не медленнее, чем загрузка другого INI-файла. На самом деле, он работает быстрее ini_set()
во втором файле с require()
, чем загрузить INI-файл.
Даже пустой файл.ini имеет некоторые накладные расходы. Я подозреваю, что внутренне файлы.ini делают что-то похожее на ini_set в любом случае.
# Baseline (no .ini, empty script)
$ time for ((i=0;i<1000;i++)); do php -n empty.php; done
real 0m21.214s
# php.ini: date.timezone = Australia/Sydney
$ time for ((i=0;i<1000;i++)); do php -c php.ini empty.php; done
real 0m23.015s
# inline.php: <?php ini_set('date.timezone', 'Australia/Sydney')
$ time for ((i=0;i<1000;i++)); do php -n inline.php; done
real 0m21.150s
Эти цифры кажутся довольно представительными. Однако разница в производительности здесь не столь значительна. Скорее всего, все сводится к тому, какая согласованность и гибкость среды вам нужна.
Поскольку я считаю, что ini_set() лучше, чем открывать файл ini и вносить изменения, потому что если вы измените настройку ini один раз, это будет применимо ко всем вашим проектам php, но в ini_set() вам даже не придется думать о другом php. приложение.