PHP: оптимальное хранилище конфигурации?

Мое приложение настраивается через множество ключей / значений (скажем, например, 30 000)

Я хочу найти лучший способ развертывания для этих конфигураций, зная, что я хочу избежать DEFINE, чтобы разрешить повторную настройку времени выполнения.

Я думал о

  • предварительная компиляция их в массив через php-файл
  • предварительно скомпилировать их в базу данных sqlite tmpfs
  • предварительно скомпилировать их в memcached db

какие у меня варианты

  • лучшее время произвольного доступа к этой конфигурации (память не проблема)?
  • лучшее структурированное время доступа, если я могу разбить эту конфигурацию на такие семейства, как (network, i18n, ..)

Спасибо, Джером

Related of "PHP: оптимальное хранилище конфигурации?"

Ну, если память не проблема, просто сериализуйте массив в файл. Существует не более быстрое решение, чем это. У вас нет накладных расходов на ввод-вывод и библиотеку SQLite, и у вас нет сетевых издержек memcached.

Но имейте в виду, что память действительно не должна быть проблемой. Вы будете загружать весь массив массивов в 30 000 единиц одновременно, в отличие от использования базы данных, где вы можете загружать их по мере необходимости.

Чтобы структурировать настройки, вы можете поместить их в свой собственный файл.

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

Как насчет базы данных?

С такой схемой:

 | key | value | 

У вас могут быть такие данные:

 | currency | pound | | timezone | GMT | 

Это также означает, что вы можете запросить его следующим образом:

 SELECT * FROM options WHERE key = 'timezone' 

Или даже вернуть много вариантов:

 SELECT * FROM options WHERE key IN ('timezone','currency') 

Это может быть любая база данных, не в последнюю очередь база данных SQLite. Если вы используете такой язык, как PHP, вы можете использовать ADOdb для абстракции базы данных, чтобы ваше приложение было переносимым между различными типами баз данных, просто мысль, если вы были обеспокоены привязкой к одной базе данных.

Если вы хотите структурировать, я бы сказал ini-файлы, используя функцию parse_ini_file .