Использование настроек из базы
Использование настроек из базы
Здравствуйте!
У меня в БД есть таблица с параметрами для приложения.
Эти параметры периодически используются в приложении.
Я вижу два варианта:
1) Каждый раз запрашивать их из базы
2) В абстрактном классе Controller записывать в public $settings; эти значения.
У меня в таблице настроек 44 записи.
Как вы думаете, второй вариант будет сильно загружать приложение?
Или, возможно в Yii есть какое то другое место, куда можно занести данные из базы?
У меня в БД есть таблица с параметрами для приложения.
Эти параметры периодически используются в приложении.
Я вижу два варианта:
1) Каждый раз запрашивать их из базы
2) В абстрактном классе Controller записывать в public $settings; эти значения.
У меня в таблице настроек 44 записи.
Как вы думаете, второй вариант будет сильно загружать приложение?
Или, возможно в Yii есть какое то другое место, куда можно занести данные из базы?
Re: Использование настроек из базы
Кешируйте.
- Ghost_nsk
- Сообщения: 825
- Зарегистрирован: 2012.01.01, 00:45
- Откуда: Новосибирск
- Контактная информация:
Re: Использование настроек из базы
закинь их в массив контроллера и не парься, будешь вызывать параметры вот так:
По-моему, из базы каждый раз грузить инфу, которую можно легко закинуть в файлы, которые все равно задействуются при каждом просмотре страницы, смысла много не имеет
Код: Выделить всё
$settingValue = Yii::app()->controller->AppSettings['setting1'];
// или в контроллерах и экшенах
$settingValue = $this->AppSettings['setting1'];
// ну и set соответственный
$this->AppSettings['setting1'] = "value";
Re: Использование настроек из базы
угу, и вот я сдаю проект, мне звонит заказчик и говорит - как мне сменить настройку. прямо представляю как я ему буду объяснять: "откройте такой-то файл, отредактируйте такую-то строку"
Re: Использование настроек из базы
Ghost_nsk писал(а):закинь их в массив контроллера и не парься, будешь вызывать параметры вот так:По-моему, из базы каждый раз грузить инфу, которую можно легко закинуть в файлы, которые все равно задействуются при каждом просмотре страницы, смысла много не имеетКод: Выделить всё
$settingValue = Yii::app()->controller->AppSettings['setting1']; // или в контроллерах и экшенах $settingValue = $this->AppSettings['setting1']; // ну и set соответственный $this->AppSettings['setting1'] = "value";
Это хорош вариант, если эти данные никогда не будут меняться, или этим будите заниматься Вы
Re: Использование настроек из базы
Запрашивать из базы каждый раз, наверное, неправильно.baydikov писал(а): Я вижу два варианта:
1) Каждый раз запрашивать их из базы
2) В абстрактном классе Controller записывать в public $settings; эти значения.
У меня в таблице настроек 44 записи.
Можно при старте приложения их все считать в массив, например в параметры приложения, а потом оттуда их брать, когда нужно. Например, в onBeginRequest.
Оффтоп: а так Вы скажете заказчику - напиши-ка запрос SQL серверу и запусти его с консоли
- Ghost_nsk
- Сообщения: 825
- Зарегистрирован: 2012.01.01, 00:45
- Откуда: Новосибирск
- Контактная информация:
Re: Использование настроек из базы
тут с Вами согласенbaydikov писал(а):Это хорош вариант, если эти данные никогда не будут меняться, или этим будите заниматься Вы
Re: Использование настроек из базы
Дёрганье базы 44 раза намного хуже, так что лучше выбрать все сразу.baydikov писал(а):Как вы думаете, второй вариант будет сильно загружать приложение?
Или, возможно в Yii есть какое то другое место, куда можно занести данные из базы?
Лучше хранить настройки в отдельном компоненте, а не в контроллере.
Re: Использование настроек из базы
А как такой вариант:
При первом обращении считывать настройки и сохранить их в файл в виде php массива. В конфиге приложения этот массив сливается в params, которые доступны отовсюду. При изменении настроек в бд файл с массивом обновляется. Результат - настройки доступны всегда и подключаются вместе с конфигом.
При первом обращении считывать настройки и сохранить их в файл в виде php массива. В конфиге приложения этот массив сливается в params, которые доступны отовсюду. При изменении настроек в бд файл с массивом обновляется. Результат - настройки доступны всегда и подключаются вместе с конфигом.
Re: Использование настроек из базы
Тогда зачем БД вообще нужна, если можно сразу в файл записывать?C0vax писал(а):А как такой вариант:
При первом обращении считывать настройки и сохранить их в файл в виде php массива...
Последний раз редактировалось ElisDN 2012.11.15, 17:18, всего редактировалось 2 раза.
Re: Использование настроек из базы
и регулярками парсить
Re: Использование настроек из базы
я просто складывал все в отдельный файл, а клиенту говорил - настройки в таком то файле, и все. Но конечно грамотней сделать, если позволяют сроки, как писал ElisDN, отличная статья кстати Дмитрий спасибо что поделился!
ElisDN писал(а):Дёрганье базы 44 раза намного хуже, так что лучше выбрать все сразу.baydikov писал(а):Как вы думаете, второй вариант будет сильно загружать приложение?
Или, возможно в Yii есть какое то другое место, куда можно занести данные из базы?
Лучше хранить настройки в отдельном компоненте, а не в контроллере.
Re: Использование настроек из базы
Использовать ini файл для хранения настроек. И сделать отдельный контроллер для изменения данных.