Intereting Posts
вставлять контакты в базу данных, но не хочет дублировать уже существующий контакт Запустите PHP-скрипт без веб-страницы, ожидая его завершения Предложение MySQL Query IN () Медленное индексирование столбца Инъекция зависимостей Laravel: когда вам нужно? Когда вы можете издеваться над фасадами? Преимущества любого метода? Соответствие адреса IPv6 для подсети CIDR facebook getUser () на вкладке страницы вентилятора iframe показывает внутреннюю ошибку сервера только в IE Вставка даты в mongodb Преобразование объекта в массив дает странный результат Google API php client: отправить etag Преобразование XML в JSON в PHP SimpleXML Найдите день в соответствии с датой в android Является ли порядок ключей, возвращаемых из array_keys, таким же, как и порядок во входном массиве? Можно ли заставить glob () PHP искать файлы в нечувствительном к регистру образом? Подзапросы ActiveRecord Yii Широкий доступ ODBC от PHP на Linux?

Как сохранить настройки конфигурации для веб-приложения?

У меня есть некоторые метаданные сайта, которые я хотел бы изменить … например, в моем приложении, если системный администратор не захотел использовать часть «Инвентаризация» сайта, он / она мог отключить его, и он исчезнет с основного сайта.

Поэтому я подумал, может быть, я мог бы сделать таблицу в моей базе данных под названием «meta» и вставить значения (или кортежи) там! Затем, если модуль отключился, скрипт обновил строку и установил «module x» равным 0, и я бы покончил с этим, не так ли?

За исключением того, что это кажется ужасным множеством накладных расходов (создание всей таблицы и ее поддержание и т. Д.) Только для набора значений … В основном, мое решение звучит как перетаскивание квадратной привязки в круглый слот.

Беглый взгляд на базу данных drupal ничего не дал, и я предполагаю, что они используют файл конфигурации на самом сервере? Если это так, я не знаю точно, как сохраненные значения в файле .cfg (например) могут быть прочитаны веб-приложением, и я не знаю, как такое приложение может сохранять информацию в файл. Я был бы признателен вам за понимание, если вы решили эту проблему раньше.

Кстати, я использую прежде всего PHP.

Заранее спасибо!

Я часто видел, что это было выполнено с помощью массива config:

$config["admin_email"] = "admin@mydomain.com"; $config["site_name"] = "Bob's Trinket Store"; $config["excluded_modules"] = array("inventory", "user_chat"); 

Затем вы можете проверить:

 if (!in_array("inventory", $config["excluded_modules"])) { // include inventory logic } 

Конечно, это немного назад. На самом деле было бы разумнее явно объявлять включенные модули, а не отрицательные. Затем вы будете ссылаться на этот config.php в своем проекте на загрузку и действовать в ответ на различные конфигурации.

Вы также можете реализовать это как таблицу базы данных, создав не менее двух полей:

  1. вариант
  2. Стоимость

Где option может быть «excluded_modules», и его соответствующим value будет «inventory, user_cat». Однако, честно говоря, этот метод немного неряшлив и может вызвать у вас некоторое разочарование в будущем.

Я знаю, что ваш вопрос: «Как я читаю / пишу в отдельный файл на сервере из веб-приложения», но я решил, что рассмотрю одно из сделанных вами предположений. Нет ничего (слишком) неправильно с сохранением вашего конфига в БД.

Я видел проекты (с большим количеством трафика и хорошим временем безотказной работы), а также тонны ИТ, которые сохраняют его таким образом = P), который хранит конфигурацию в базе данных, более или менее, как вы описали. Если это отдельная таблица, и у вас на ней нет сумасшедшей схемы сбоя / разделения, то на самом деле это НЕ ТАКОЕ накладные расходы.

БД имеет множество функций, помимо хранения данных и большой инфраструктуры вокруг него. Если вы используете БД для своей конфигурации, вы можете использовать любой механизм, который у вас есть для развертывания / резервного копирования БД, с небольшими дополнительными затратами. Вы также можете воспользоваться встроенным механизмом разрешений и любыми доступными функциями отмены.

Редактировать: Однако, если вы получаете доступ к этой конфигурации на каждом дисплее страницы, тем не менее, вы можете иметь узкое место 🙂 Все о вашем дизайне. Одним из решений является то, что если у вас есть постоянный веб-сервис, вы можете повторно переустановить его каждые X секунд.

У вас есть два варианта в принципе – либо поместить его в таблицу БД, либо в плоский конфигурационный файл (возможно, PHP, возможно, XML). С последним, чтобы сделать его редактируемым со страницы, вам придется (1) иметь дело с грязными проблемами доступа к файлу ОС, (1) применять правильные разрешения для файлов при каждом создании сайта и (3) анализировать и генерировать PHP / XML-код. С базой данных все, что вам нужно, это простой запрос, поэтому я бы определенно пошел с этим.

Что касается больших проектов, использующих этот подход, я знаю, что phpBB хранит большую часть своей конфигурации в базе данных (за исключением паролей, последний раз, когда я проверял).

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