Страница 1 из 1

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

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

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

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

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

Добавлено: 2012.11.13, 14:03
Nafania
Кешируйте.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 2012.11.15, 17:08
anton44eg
и регулярками парсить :)

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

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

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

Добавлено: 2012.11.17, 15:54
NeverDie
Использовать ini файл для хранения настроек. И сделать отдельный контроллер для изменения данных.