Что лучше 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. приложение.

Другие вопросы по тегам