Я знаю, что некоторые люди хранят настройки в файле .ini и получают значения с помощью parse_ini_file()
в PHP. Без проведения тестов мне интересно узнать о производительности.
Знаете ли вы, может ли кеш-код операции кэшировать любой из этих файлов, если параметры находятся в ini-файле?
Согласно этому старому сообщению в блоге, полученному из веб-архивов.
От самого быстрого до самого медленного:
Если на сервере имеется APC или другой ускоритель, простые PHP-файлы будут самыми быстрыми из-за того, что они будут обрабатываться только один раз и сохраняться в памяти для дальнейшего использования.
Для другой части вопроса: если кеш-код кэша кэширует ini-файлы. На момент написания моей версии PHP 5.3.5 кеш APC не делал этого в автоматическом режиме, но вы можете убедиться, что ini-файлы кэшируются APC, добавив функцию, подобную следующей, и используйте ее для разбора ini-файлов :
function parse_ini_file_ext ($file, $sections = null) { ob_start(); include $file; $str = ob_get_contents(); ob_end_clean(); return parse_ini_string($str, $sections); }
Затем ini-файлы кэшируются APC. Измеряется с помощью простого теста microtime, это также быстрее, чем чтение файлов ini напрямую.
Я всегда подозревал, что parse_ini_file идет медленно, и что хранение переменных в массивах в файлах PHP происходит быстрее. Но есть статья 2004 года, в которой говорится иначе:
И, наконец, мы тестируем сохранение параметров конфигурации в INI-файле или в файле PHP как ассоциативный массив. Мы обнаружили, что сохранение в INI-файле и использование parse_ini_file () быстрее, чем анализ файла PHP.
Я не буду полностью в это поверить, пока не испытаю это сам, когда подойду к нему некоторое время. Но статья (и журнал) выглядит достаточно прочной, чтобы ее воспринимали всерьез.
Встроенная функция parse_ini_file
реализована в C. Это делает ее довольно быстрой.
Вы будете намного быстрее, если не будете кэшировать ini-файл. Все эксперты могут сказать, что это правда.