PHP: оптимальная конфигурация хранилища? - PullRequest
3 голосов
/ 12 апреля 2010

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

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

Я думал о

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 12 апреля 2010

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

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

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

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

0 голосов
/ 12 апреля 2010

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

0 голосов
/ 12 апреля 2010

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

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

| key | value |

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

| currency | pound |
| timezone | GMT   |

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

SELECT * FROM options WHERE key = 'timezone'

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

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

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

...