Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хранение конфигурации 
:(
    Опции темы
krundetz
Дата 1.6.2008, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 1
Всего: 69



Brabus2008 а какого типа параметры вы хотите хранит как конфигурационные?


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
Brabus2008
Дата 1.6.2008, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 18.4.2008
Где: Харьков

Репутация: нет
Всего: нет



krundetz, всяческие параметры системы, статус какого-либо функционала (вкл/выкл), адреса директорий и пр. В общем строки.
Самое глупое то, что изначально я в курсе, что брать эти параметры быстрее с файла, по сраневнию с запросом к бд. (будем иметь вду, что файл и сервер бд на локалхосте, выборка без всяких сортировок и группирований). Но разница между ними мизерная, если сравнивать "по одному". А когда в цикле 1000 одинаковых запросов туда и туда, файлы выигрывают почти вдвое. Но меня интересует ОДНОВРЕМЕННЫЕ обращения, которые я смоделировать точно не могу smile На самом деле логично и далее предположить, что к файлам быстрее... Но насколько эти значения будут расходится и стоит ли идти у них на поводу.

Это сообщение отредактировал(а) Brabus2008 - 1.6.2008, 20:27
PM ICQ   Вверх
Feldmarschall
Дата 1.6.2008, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: -2
Всего: 32



Цитата(Brabus2008 @  1.6.2008,  20:26 Найти цитируемый пост)
я в курсе, что брать эти параметры быстрее с файла

правильно.
Цитата(Brabus2008 @  1.6.2008,  20:26 Найти цитируемый пост)
в цикле 1000 одинаковых запросов туда и туда, файлы выигрывают почти вдвое

правильно.

Однако ни один веб-сайт не отказывается от использования БД.
Теперь осталось сложить два и два, и сделать таки вывод, о котором я говорил с самого начала - видимо, скорость, быстродействие и производительность - не единственные факторы, по которым выбирается та или иная технология.
Вот пример: мы хотим хранить данные в БД. А зачем? Это реляционная информация? Мы будем сортировать эти данные? Связывать с ними какие-то другие? Запрашивать по отдельности? Если нет - то зачем нам БД вообще? Зачем использовать инструмент не по назначению? Почему такой очевидный критерий не рассматривается? 
Ну ладно - храним в БД. А как? Это будет эмуляция файла (все одним куском) или по строке на параметр? 
Этот вопрос интересен, поскольку тесно связан с вопросом "удобства", которое сводится, как я думаю, к количеству кода. 
$config=unserialize($file_get_contents(conf.txt)); - это неудобно?
Если в БД одним куском, то какая разница с 
$config=db->get_one(unserialize($file_get_contents(conf.txt));
?

PM   Вверх
Brabus2008
Дата 1.6.2008, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 18.4.2008
Где: Харьков

Репутация: нет
Всего: нет



Ну, в данный момент я повсеместно использую хранение в файле ini. Брать легко: parse_ini_file . А вот с записью мне не очень нравится. Нужно вышеуказанной функцией пропарсить файл, найти в массиве нужное значение, изменить его, и опять массив записать в нужном формате в файл. Куда удобней обновить одну запись в бд. Грубо говоря, во мне борятся два мнения: удобство (бд) или скорость (файл) smile
PM ICQ   Вверх
Feldmarschall
Дата 1.6.2008, 21:30 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: -2
Всего: 32



Где э тут неудобство, если у тебя код уже написан?
И в том, и в другом случае все сводится к вызову одной функции. 

Удобство БД не в способе записи в неё данных, а в легкости манипулирования ими!

PM   Вверх
skyboy
Дата 1.6.2008, 21:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



к сказанному Feldmarschall, хочу добавить ещё одно замечание. архитектурное.
обычно, все настройки настройки системы представляют собой многомерный массив(дерево или даже граф - в зависимости от ситуции): как минимум, "разделы" конфигурации(подключение к БД, язык интерфейса, режим работы.... да мало ли ещё!) и собственно параметры конфигурации(имя пользователя БД, имя каталога с картинками, и т.д. и т.п.), а БД у нас в основном используются реляционные. И получается, что для формаирования набора настроек из двумерного массива, хранящегося в БД, приходится делать дополнительную обработку. В то время, как при хранении в PHP-файле в виде массива достаточно просто сделать include. Да, с точки зрения скорости выполнения разницы большой не будет(один запрос к БД или одноразовая обработка включаемого скрипта), но в случае с файлом всю "грязную" работу делает PHP. Так зачем усложнять код и открывать дополнительный простор для совершения ошибок? smile 
PM MAIL   Вверх
Brabus2008
Дата 1.6.2008, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 18.4.2008
Где: Харьков

Репутация: нет
Всего: нет



Мм, верное замечание, спасибо.
PM ICQ   Вверх
krundetz
Дата 1.6.2008, 21:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 1
Всего: 69



Цитата(Feldmarschall @ 1.6.2008,  21:01)
Этот вопрос интересен, поскольку тесно связан с вопросом "удобства", которое сводится, как я думаю, к количеству кода. 

Код

include 'config.php';

как вам это по удобству.
Цитата(Brabus2008)

Брать легко: parse_ini_file

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


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
Brabus2008
Дата 1.6.2008, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 18.4.2008
Где: Харьков

Репутация: нет
Всего: нет



Цитата(krundetz @  1.6.2008,  21:40 Найти цитируемый пост)
Я что то не понимаю вас. Конфигурация это то что у нас должно подгрузиться в любом случае. В не зависимости от того чего это конфигурация всей системы или отдельного модуля. Какя здесь может быть вообще выборка.

На пример: есть страница админки, которая отвечает за конфигурирование какого-либо модуля. На ней было бы удобно выбирать (ну, в данном случае говорим о базе, потому) с базы только параметры, относящиеся к данному модулю. Вот и выборка. С другой стороны можно хранить конфиги в разных файлах для разных модулей, и эффект будет тот-же smile Но не совсем централизовано будет, в отличие от варианта с бд.
PM ICQ   Вверх
skyboy
Дата 1.6.2008, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



Цитата(Brabus2008 @  1.6.2008,  20:59 Найти цитируемый пост)
Но не совсем централизовано будет, в отличие от варианта с бд. 

ну, у тебя же картинки отдельно друг от друга лежат, так?  smile 
да и модули - не все в одном-единственном файле...
вот когда однородная/однотипная информация начинает дробиться(на разные таблицы с одинаковой структурой... или на разные файлы) без веской причины, то это "не централизовано". а если информация разнотипная, ещё и по возможности - друг от друга не зависящая, то наоборот разделение - лучше. потому что делает части минимально зависящими друг от друга.

Добавлено через 1 минуту и 8 секунд
но это, опять же, разговор о "сферическом коне в вакууме", потому что все зависит от условий конкретной задачи: модели, ограничений на реализацию, требования к функционалу... в "общем виде" универсального решения нет.
PM MAIL   Вверх
krundetz
Дата 1.6.2008, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 1
Всего: 69



Brabus2008 ИМХО странный както вы пример привели. Причем здесь админка? Скорость исполнения скриптов в админке не имеет существенного значения там важно совершенно другое(не будете же вы их менять каждую минуту). Да и скорость с которой будйт меняться конфигурационные параметры будет по определению больше чем скорость их чтения и не важно что это увас будет файл или БД.

Не стоит смешивать настройки системы в целом и настройки модулей. Разделение позволит вам упростить систему которая будет отвечать за включение нового модуля в систему и выключение ненужного из нее. Собственно говоря разделяете же вы саму систему на модули.

Это сообщение отредактировал(а) krundetz - 1.6.2008, 22:39


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
maxbrown
Дата 16.6.2008, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 26
Регистрация: 16.6.2008
Где: Obninsk sci-city

Репутация: нет
Всего: нет



Как я уже сказал в своём вопросе http://forum.vingrad.ru/forum/topic-216786...y1550927/0.html , я сохраняю данные в xml-файле и вношу запись о нём в MySQL-базу.
Но это - для общего решения о сохранении заранее неизвестного количества неоднородных переменных некоего скрипта, одного из очень многих и имеющего такие ассоциативные признаки, как, к примеру, "username того, от чьего имени скрипт запущен", "время предыдущего запуска" и т.п.

В частных случаях IMHO надо действовать по ситуации: огромный массив однородных и не требующих выборки данных лучше просто записать в бинарник, разнородные переменные лучше хранить в xml-формате, а если требуется выборка, то никуда не деться от *SQL

В Вашем частном случае, как мне кажется, перспективнее всё-таки использовать базу, поскольку там не нужно заботиться об одновременных вызовах по чтению/записи, а случае с файлами в лучшем случае будут большие таймауты, а в худшем - собщения об ошибке "невозможно открыть файл" (занятый другим процессом)
PM MAIL WWW ICQ   Вверх
IZ@TOP
Дата 16.6.2008, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Цитата(skyboy @  1.6.2008,  22:31 Найти цитируемый пост)
обычно, все настройки настройки системы представляют собой многомерный массив(дерево или даже граф - в зависимости от ситуции): как минимум, "разделы" конфигурации(подключение к БД, язык интерфейса, режим работы.... да мало ли ещё!) и собственно параметры конфигурации(имя пользователя БД, имя каталога с картинками, и т.д. и т.п.), а БД у нас в основном используются реляционные. 

Как вариант: XML.


Цитата(maxbrown @  16.6.2008,  12:07 Найти цитируемый пост)
В Вашем частном случае, как мне кажется, перспективнее всё-таки использовать базу, поскольку там не нужно заботиться об одновременных вызовах по чтению/записи, а случае с файлами в лучшем случае будут большие таймауты, а в худшем - собщения об ошибке "невозможно открыть файл" (занятый другим процессом) 


Кэшируйте.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
nerezus
Дата 22.6.2008, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Файл конфигурации и спец. класс для парсинга и отдачи. Синглтоном.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
MuToGeN
Дата 23.6.2008, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 4
Всего: 32



Цитата(Brabus2008 @  1.6.2008,  14:10 Найти цитируемый пост)
Скажем, при 50 одновременных обращений что будет быстрее?

Быстрее будет memcached (да, SixApart действительно во многих вещах облегчили жизнь веб-девелоперам, работающим с критичными нагрузками).
Но есть еще один момент - преждевременная оптимизация затрудняет дальнейшее развитие проекта. Кеширование - наипервейшая и чаще всего единственная необходимая вещь для оптимизации, но только после того, как понимаешь, что именно надо оптимизировать.

Добавлено через 3 минуты и 18 секунд
И, кстати, вариант типа $config = unserialize(file_get_contents('config.serialized.php')) будет по-быстрее, чем $config = array('blabla' => 'blabla', ......).


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0796 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.