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

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

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

Сообщение baydikov » 2012.11.13, 13:59

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

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

Как вы думаете, второй вариант будет сильно загружать приложение?
Или, возможно в Yii есть какое то другое место, куда можно занести данные из базы?

Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

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

Сообщение Nafania » 2012.11.13, 14:03

Кешируйте.

Аватара пользователя
Ghost_nsk
Сообщения: 787
Зарегистрирован: 2012.01.01, 00:45
Откуда: Новосибирск

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

Сообщение Ghost_nsk » 2012.11.13, 16:08

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

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

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

Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

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

Сообщение anton44eg » 2012.11.13, 16:26

угу, и вот я сдаю проект, мне звонит заказчик и говорит - как мне сменить настройку. прямо представляю как я ему буду объяснять: "откройте такой-то файл, отредактируйте такую-то строку"

baydikov
Сообщения: 112
Зарегистрирован: 2012.11.05, 15:52

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

Сообщение baydikov » 2012.11.13, 16:27

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 » 2012.11.14, 00:10

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

Оффтоп: а так Вы скажете заказчику - напиши-ка запрос SQL серверу и запусти его с консоли :)

Аватара пользователя
Ghost_nsk
Сообщения: 787
Зарегистрирован: 2012.01.01, 00:45
Откуда: Новосибирск

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

Сообщение Ghost_nsk » 2012.11.14, 07:06

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

Аватара пользователя
ElisDN
Сообщения: 5267
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

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

Сообщение ElisDN » 2012.11.14, 08:19

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

C0vax
Сообщения: 42
Зарегистрирован: 2011.08.24, 22:28

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

Сообщение C0vax » 2012.11.15, 08:18

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

Аватара пользователя
ElisDN
Сообщения: 5267
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

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

Сообщение ElisDN » 2012.11.15, 15:03

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

Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

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

Сообщение anton44eg » 2012.11.15, 17:08

и регулярками парсить :)

alekso
Сообщения: 190
Зарегистрирован: 2012.09.15, 23:49

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

Сообщение alekso » 2012.11.16, 01:55

я просто складывал все в отдельный файл, а клиенту говорил - настройки в таком то файле, и все. Но конечно грамотней сделать, если позволяют сроки, как писал ElisDN, отличная статья кстати Дмитрий спасибо что поделился!
ElisDN писал(а):
baydikov писал(а):Как вы думаете, второй вариант будет сильно загружать приложение?
Или, возможно в Yii есть какое то другое место, куда можно занести данные из базы?
Дёрганье базы 44 раза намного хуже, так что лучше выбрать все сразу.
Лучше хранить настройки в отдельном компоненте, а не в контроллере.

Аватара пользователя
NeverDie
Сообщения: 67
Зарегистрирован: 2012.05.13, 04:05
Откуда: Минск
Контактная информация:

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

Сообщение NeverDie » 2012.11.17, 15:54

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

Ответить