Использование настроек из базы

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
baydikov
Сообщения: 112
Зарегистрирован: 2012.11.05, 15:52

Использование настроек из базы

Сообщение baydikov »

Здравствуйте!
У меня в БД есть таблица с параметрами для приложения.
Эти параметры периодически используются в приложении.

Я вижу два варианта:
1) Каждый раз запрашивать их из базы
2) В абстрактном классе Controller записывать в public $settings; эти значения.
У меня в таблице настроек 44 записи.

Как вы думаете, второй вариант будет сильно загружать приложение?
Или, возможно в Yii есть какое то другое место, куда можно занести данные из базы?
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: Использование настроек из базы

Сообщение Nafania »

Кешируйте.
Аватара пользователя
Ghost_nsk
Сообщения: 825
Зарегистрирован: 2012.01.01, 00:45
Откуда: Новосибирск
Контактная информация:

Re: Использование настроек из базы

Сообщение Ghost_nsk »

закинь их в массив контроллера и не парься, будешь вызывать параметры вот так:

Код: Выделить всё

$settingValue = Yii::app()->controller->AppSettings['setting1'];
// или в контроллерах и экшенах
$settingValue = $this->AppSettings['setting1'];
// ну и set соответственный
$this->AppSettings['setting1'] = "value";
По-моему, из базы каждый раз грузить инфу, которую можно легко закинуть в файлы, которые все равно задействуются при каждом просмотре страницы, смысла много не имеет
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: Использование настроек из базы

Сообщение anton44eg »

угу, и вот я сдаю проект, мне звонит заказчик и говорит - как мне сменить настройку. прямо представляю как я ему буду объяснять: "откройте такой-то файл, отредактируйте такую-то строку"
baydikov
Сообщения: 112
Зарегистрирован: 2012.11.05, 15:52

Re: Использование настроек из базы

Сообщение baydikov »

Ghost_nsk писал(а):закинь их в массив контроллера и не парься, будешь вызывать параметры вот так:

Код: Выделить всё

$settingValue = Yii::app()->controller->AppSettings['setting1'];
// или в контроллерах и экшенах
$settingValue = $this->AppSettings['setting1'];
// ну и set соответственный
$this->AppSettings['setting1'] = "value";
 
По-моему, из базы каждый раз грузить инфу, которую можно легко закинуть в файлы, которые все равно задействуются при каждом просмотре страницы, смысла много не имеет

Это хорош вариант, если эти данные никогда не будут меняться, или этим будите заниматься Вы
Vic
Сообщения: 109
Зарегистрирован: 2010.03.12, 01:55

Re: Использование настроек из базы

Сообщение Vic »

baydikov писал(а): Я вижу два варианта:
1) Каждый раз запрашивать их из базы
2) В абстрактном классе Controller записывать в public $settings; эти значения.
У меня в таблице настроек 44 записи.
Запрашивать из базы каждый раз, наверное, неправильно.
Можно при старте приложения их все считать в массив, например в параметры приложения, а потом оттуда их брать, когда нужно. Например, в onBeginRequest.

Оффтоп: а так Вы скажете заказчику - напиши-ка запрос SQL серверу и запусти его с консоли :)
Аватара пользователя
Ghost_nsk
Сообщения: 825
Зарегистрирован: 2012.01.01, 00:45
Откуда: Новосибирск
Контактная информация:

Re: Использование настроек из базы

Сообщение Ghost_nsk »

baydikov писал(а):Это хорош вариант, если эти данные никогда не будут меняться, или этим будите заниматься Вы
тут с Вами согласен :)
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Использование настроек из базы

Сообщение ElisDN »

baydikov писал(а):Как вы думаете, второй вариант будет сильно загружать приложение?
Или, возможно в Yii есть какое то другое место, куда можно занести данные из базы?
Дёрганье базы 44 раза намного хуже, так что лучше выбрать все сразу.
Лучше хранить настройки в отдельном компоненте, а не в контроллере.
C0vax
Сообщения: 42
Зарегистрирован: 2011.08.24, 22:28

Re: Использование настроек из базы

Сообщение C0vax »

А как такой вариант:
При первом обращении считывать настройки и сохранить их в файл в виде php массива. В конфиге приложения этот массив сливается в params, которые доступны отовсюду. При изменении настроек в бд файл с массивом обновляется. Результат - настройки доступны всегда и подключаются вместе с конфигом.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Использование настроек из базы

Сообщение ElisDN »

C0vax писал(а):А как такой вариант:
При первом обращении считывать настройки и сохранить их в файл в виде php массива...
Тогда зачем БД вообще нужна, если можно сразу в файл записывать?
Последний раз редактировалось ElisDN 2012.11.15, 17:18, всего редактировалось 2 раза.
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: Использование настроек из базы

Сообщение anton44eg »

и регулярками парсить :)
alekso
Сообщения: 190
Зарегистрирован: 2012.09.15, 23:49

Re: Использование настроек из базы

Сообщение alekso »

я просто складывал все в отдельный файл, а клиенту говорил - настройки в таком то файле, и все. Но конечно грамотней сделать, если позволяют сроки, как писал ElisDN, отличная статья кстати Дмитрий спасибо что поделился!
ElisDN писал(а):
baydikov писал(а):Как вы думаете, второй вариант будет сильно загружать приложение?
Или, возможно в Yii есть какое то другое место, куда можно занести данные из базы?
Дёрганье базы 44 раза намного хуже, так что лучше выбрать все сразу.
Лучше хранить настройки в отдельном компоненте, а не в контроллере.
Аватара пользователя
NeverDie
Сообщения: 70
Зарегистрирован: 2012.05.13, 04:05
Откуда: Минск
Контактная информация:

Re: Использование настроек из базы

Сообщение NeverDie »

Использовать ini файл для хранения настроек. И сделать отдельный контроллер для изменения данных.
Ответить