Подтвердить что ты не робот

Производительность PHP parse_ini_file()?

Я знаю, что некоторые люди хранят настройки в файле .ini и получают значения с parse_ini_file() в PHP. Без выполнения тестов мне интересно узнать о производительности.

Знаете ли вы, может ли кеш-код операции кэшировать любой из этих типов, если параметр находится в ini файле?

4b9b3361

Ответ 1

В соответствии с этим старым сообщением APC или другой ускоритель доступен на сервере, то простые файлы PHP будут самыми быстрыми из-за того, что они будут проанализированы только один раз и хранится в памяти для дальнейшего использования.

Ответ 2

Для другой части вопроса: Если кеш-код операции кэширует 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 файлов.

Ответ 3

У меня всегда возникало подозрение, что parse_ini_file очень медленный, и что хранение переменных в массивах в файлах PHP происходит быстрее. Но там в этой статье в статье, в которой говорится иначе:

И, наконец, мы тестируем сохранение параметров конфигурации в INI файле или в файле PHP как ассоциативный массив. Мы обнаружили, что сохранение в INI файле и использование parse_ini_file() быстрее, чем анализ файла PHP.

Я не буду полностью в это поверить, пока не испытаю его сам, когда подойду к нему некоторое время. Но статья (и журнал) выглядит достаточно солидно, чтобы ее воспринимали всерьез.

Ответ 4

Встроенная функция parse_ini_file реализована в C. Это делает ее довольно быстрой.

Ответ 5

Вы будете намного быстрее, если не будете кэшировать ini файл. Все эксперты могут сказать, что это правда.