![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 1 Всего: 69 |
Brabus2008 а какого типа параметры вы хотите хранит как конфигурационные?
|
|||
|
||||
| Brabus2008 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 18.4.2008 Где: Харьков Репутация: нет Всего: нет |
krundetz, всяческие параметры системы, статус какого-либо функционала (вкл/выкл), адреса директорий и пр. В общем строки.
Самое глупое то, что изначально я в курсе, что брать эти параметры быстрее с файла, по сраневнию с запросом к бд. (будем иметь вду, что файл и сервер бд на локалхосте, выборка без всяких сортировок и группирований). Но разница между ними мизерная, если сравнивать "по одному". А когда в цикле 1000 одинаковых запросов туда и туда, файлы выигрывают почти вдвое. Но меня интересует ОДНОВРЕМЕННЫЕ обращения, которые я смоделировать точно не могу Это сообщение отредактировал(а) Brabus2008 - 1.6.2008, 20:27 |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: -2 Всего: 32 |
правильно.
правильно. Однако ни один веб-сайт не отказывается от использования БД. Теперь осталось сложить два и два, и сделать таки вывод, о котором я говорил с самого начала - видимо, скорость, быстродействие и производительность - не единственные факторы, по которым выбирается та или иная технология. Вот пример: мы хотим хранить данные в БД. А зачем? Это реляционная информация? Мы будем сортировать эти данные? Связывать с ними какие-то другие? Запрашивать по отдельности? Если нет - то зачем нам БД вообще? Зачем использовать инструмент не по назначению? Почему такой очевидный критерий не рассматривается? Ну ладно - храним в БД. А как? Это будет эмуляция файла (все одним куском) или по строке на параметр? Этот вопрос интересен, поскольку тесно связан с вопросом "удобства", которое сводится, как я думаю, к количеству кода. $config=unserialize($file_get_contents(conf.txt)); - это неудобно? Если в БД одним куском, то какая разница с $config=db->get_one(unserialize($file_get_contents(conf.txt)); ? |
|||
|
||||
| Brabus2008 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 18.4.2008 Где: Харьков Репутация: нет Всего: нет |
Ну, в данный момент я повсеместно использую хранение в файле ini. Брать легко: parse_ini_file . А вот с записью мне не очень нравится. Нужно вышеуказанной функцией пропарсить файл, найти в массиве нужное значение, изменить его, и опять массив записать в нужном формате в файл. Куда удобней обновить одну запись в бд. Грубо говоря, во мне борятся два мнения: удобство (бд) или скорость (файл)
|
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: -2 Всего: 32 |
Где э тут неудобство, если у тебя код уже написан?
И в том, и в другом случае все сводится к вызову одной функции. Удобство БД не в способе записи в неё данных, а в легкости манипулирования ими! |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
к сказанному Feldmarschall, хочу добавить ещё одно замечание. архитектурное.
обычно, все настройки настройки системы представляют собой многомерный массив(дерево или даже граф - в зависимости от ситуции): как минимум, "разделы" конфигурации(подключение к БД, язык интерфейса, режим работы.... да мало ли ещё!) и собственно параметры конфигурации(имя пользователя БД, имя каталога с картинками, и т.д. и т.п.), а БД у нас в основном используются реляционные. И получается, что для формаирования набора настроек из двумерного массива, хранящегося в БД, приходится делать дополнительную обработку. В то время, как при хранении в PHP-файле в виде массива достаточно просто сделать include. Да, с точки зрения скорости выполнения разницы большой не будет(один запрос к БД или одноразовая обработка включаемого скрипта), но в случае с файлом всю "грязную" работу делает PHP. Так зачем усложнять код и открывать дополнительный простор для совершения ошибок? |
|||
|
||||
| Brabus2008 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 18.4.2008 Где: Харьков Репутация: нет Всего: нет |
Мм, верное замечание, спасибо.
|
|||
|
||||
| krundetz |
|
||||||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 1 Всего: 69 |
как вам это по удобству.
Я что то не понимаю вас. Конфигурация это то что у нас должно подгрузиться в любом случае. В не зависимости от того чего это конфигурация всей системы или отдельного модуля. Какя здесь может быть вообще выборка. Пример. Есть система парсинга. Конфигурация в этом случае это адрес ресурса с которого парсим и адрес файла в с правилами парсинга. Все и то и другое необходимо. Если у нас есть какаята выборка по параметрам то это уже не конфигурация, а логика. Данные с которыми работает логика лучше хранить в БД. |
||||||
|
|||||||
| Brabus2008 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 18.4.2008 Где: Харьков Репутация: нет Всего: нет |
На пример: есть страница админки, которая отвечает за конфигурирование какого-либо модуля. На ней было бы удобно выбирать (ну, в данном случае говорим о базе, потому) с базы только параметры, относящиеся к данному модулю. Вот и выборка. С другой стороны можно хранить конфиги в разных файлах для разных модулей, и эффект будет тот-же |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
ну, у тебя же картинки отдельно друг от друга лежат, так? да и модули - не все в одном-единственном файле... вот когда однородная/однотипная информация начинает дробиться(на разные таблицы с одинаковой структурой... или на разные файлы) без веской причины, то это "не централизовано". а если информация разнотипная, ещё и по возможности - друг от друга не зависящая, то наоборот разделение - лучше. потому что делает части минимально зависящими друг от друга. Добавлено через 1 минуту и 8 секунд но это, опять же, разговор о "сферическом коне в вакууме", потому что все зависит от условий конкретной задачи: модели, ограничений на реализацию, требования к функционалу... в "общем виде" универсального решения нет. |
|||
|
||||
| krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 1 Всего: 69 |
Brabus2008 ИМХО странный както вы пример привели. Причем здесь админка? Скорость исполнения скриптов в админке не имеет существенного значения там важно совершенно другое(не будете же вы их менять каждую минуту). Да и скорость с которой будйт меняться конфигурационные параметры будет по определению больше чем скорость их чтения и не важно что это увас будет файл или БД.
Не стоит смешивать настройки системы в целом и настройки модулей. Разделение позволит вам упростить систему которая будет отвечать за включение нового модуля в систему и выключение ненужного из нее. Собственно говоря разделяете же вы саму систему на модули. Это сообщение отредактировал(а) krundetz - 1.6.2008, 22:39 |
|||
|
||||
| maxbrown |
|
|||
![]() Новичок Профиль Группа: 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 В Вашем частном случае, как мне кажется, перспективнее всё-таки использовать базу, поскольку там не нужно заботиться об одновременных вызовах по чтению/записи, а случае с файлами в лучшем случае будут большие таймауты, а в худшем - собщения об ошибке "невозможно открыть файл" (занятый другим процессом) |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 1 Всего: 73 |
Как вариант: XML. Кэшируйте. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Файл конфигурации и спец. класс для парсинга и отдачи. Синглтоном.
|
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: 4 Всего: 32 |
Быстрее будет 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! |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Для профи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |