По моему мнению, если вы можете сохранить конфигурацию в базе данных и кэшировать результаты в памяти, производительность должна быть очень очень хорошей.
Однако, если конфигурация хранится в базе данных, и для ее получения требуется много объединений без кэширования, производительность может быть хуже, чем при использовании файлов PHP.
С другой стороны, если вы храните свою конфигурацию в файле PHP, который возвращает массив:
//config.php
return array(
'configitem1' => 'xyz',
)
//then use
$config = require_once('config.php);
производительность не должна быть слишком плохой. Очевидно, что для каждого запроса будет дисковый ввод-вывод, поэтому вы можете увидеть некоторые проблемы с производительностью, если вам требуется много файлов. Вы всегда можете кэшировать результаты в memcached или APC, чтобы избавиться от проблем с производительностью дискового ввода-вывода при необходимости загрузки файлов.
Наконец, вы можете использовать файлы XML или YAML. Они будут наименее производительными, так как вам нужно будет загрузить и прочитать файл, а затем проанализировать его.
Лично я считаю, что конфигурация должна храниться в базе данных, где пользователю приложения может понадобиться ее изменить. Например:
- Пользовательские URL-адреса для страниц.
- Настройки приложения, например, могут ли пользователи создавать новые учетные записи
- Флаги, например, находится ли приложение в режиме обслуживания или нет.
Всегда будет конфигурация, которую вам нужно сохранить в файлах:
- Параметры подключения к базе данных
- Настройки кэша (то есть настройки memcached).
Однако конфигурацию, хранящуюся в файлах, можно кэшировать в memcached или APC, поэтому ваше приложение все равно должно работать.
Итак, мои 2 цента:
- Используйте базу данных для хранения конфигурации, если пользователю НУЖНО иметь возможность ее изменить.
- Сохранение другой конфигурации в файле PHP в виде массива и использование кэширования.
- Используйте YAML и XML в качестве последнего средства.