PHP parse_ini_file () производительность? - PullRequest
17 голосов
/ 22 января 2010

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

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

Ответы [ 5 ]

24 голосов
/ 23 января 2010

Согласно этому старому сообщению в блоге , полученному из веб-архивов.

От самого быстрого до самого медленного:

  1. Сериализированные массивы
  2. Простой код PHP
  3. INI-файлы
  4. XML-файлы
  5. YAML-файлы

РЕДАКТИРОВАТЬ (08.02.2012)

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

13 голосов
/ 26 декабря 2011

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

Затем API-файлы кешируются APC. Измеряется с помощью простого микропроцессорного теста, это также быстрее, чем непосредственное чтение INI-файлов.

7 голосов
/ 22 января 2010

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

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

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

0 голосов
/ 23 января 2010

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

0 голосов
/ 22 января 2010

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

...