Intellect Board — cистема управления сайтом

Построение сайта на основе форума

Intellect Board — cистема управления сайтом »   Планы развития Intellect Board »   Работа IntB с файлами(фото, аватары, аттачи к постам и др.)
RSS

Работа IntB с файлами(фото, аватары, аттачи к постам и др.)

БД vs файл в папке +ссылка на этот файл в БД. Мнения?

Текущий рейтинг темы: Нет
Выводить сообщения

<<Назад  Вперед>>Модераторы: aerograf, wsxПечать
 
andrey_fisher
Начинающий


Всего сообщений: 46
Рейтинг пользователя: 4

Репутация пользователя: 1

Ссылка


Дата регистрации на форуме:
8 мая 2005
Тема создана по мотивам этого поста: http://intboard.ru/index.php?t=889&p=5116#pp5116

Вкратце.
В текущей версии форума все файлы, загружаемые на форум со сторны пользователя - а это как минимум ФОТО, АВАТАРЫ, И АТТАМЕНТЫ к сообщениям - хранятся в бинарном виде в базе данных.

Это весьма спорное решение, по многим причинам, ссылку на дискуссию по этому вопросу на РуБорде я найду и выложу чуть позже.
Отмечу, на мой взгляд, две ключевые причины. Одну для владельца\администратора сайта, вторую для пользователя.

Первая. Со стороны сервера - такой принцип хранения файлов порождает многократное увеличение нагрузки на базу данных. С одной стороны - резкое увеличение размера БД, с другой - увеличение загрузки при выполнении запросов, опять же из-за размера(веса) выборок.
К чему это может привести? К увеличению требований к хостингу. Для некоммерческих проектов это - возможный удар по бюджету.. Прецеденты подобного мне знакомы.

Вторая. Со стороны пользователя - отсутствие кэширования изображений как минимум, и *возможные* проблемы с сохранением\закачкой файлов как максимум. Пирчем кэширование аватаров

Есть и другие причины.. ссылки я постараюсь предоставить.
Преимущества нынешнего варианта мне выделить сложно, думаю, это вопрос к разработчикам.

В связи со всем этим - предлагаю к обсуждению вопрос.
Стоит ли изменить принцип работы движка с файлами?

идеи, предложения, уточнения - принимаются здесь.

мои 5 копеек. стоит вернуться к классической схеме работ: сами файлы (изображения и др.) хранятся в отдельной(ых) папке(ах) на сервере, вне зоны выполнения скриптов(допустим CHMOD 644 или как-то еще) - в целях безопасности. пути к файлам, ссылки на них хранятся в БД в нужных местах.
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3299
Рейтинг пользователя: 70


Ссылка


Дата регистрации на форуме:
29 сен. 2001
Ну для PHP chmod 644 на большинстве хостингов ничем не поможет, там надо расширение .txt приписывать, либо класть файл .htaccess, запрещающий выполнение скриптов.
Насчет проблем с закачкой: проблемы могут быть только при очень большом объеме данных (таком, что memory limit привысит), но такое в attach обычно не кладут. Кстати, скачивание у меня реализовано с поддержкой докачки, и корректной передачей имени файла и его размера, поэтому каких-либо проблем не предвидится.
Насчет кеширования аватаров - можно попробовать решить эту проблему с помощью вывода дополнительных HTTP-заголовков.
Таким образом, лично я считаю целесообразным только вынос из БД фотографий (что будет реализовано, но не ранее, чем в 2.20, а может быть и позже), так как они действительно способны создать существенную нагрузку на БД.

---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно!
Gram
Администратор

Gram
Откуда: Нижний Новгород
Всего сообщений: 1011
Рейтинг пользователя: 38


Ссылка


Дата регистрации на форуме:
23 июля 2003
Оффтопик: кстати, аватар в любом случае должен выводится с домашнего сервера, даже если в профиле мы выводим URL (т.е. должна работать закачка аватара с указанного урла). считаю это наиболее ГРАМотным решением.


XXXX Pro, мне вот интересно, почему выбор пал именно на БД в качестве хранилища для файлов. Это связанно лишь с неким единством в хранении данных или чем то еще?
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3299
Рейтинг пользователя: 70


Ссылка


Дата регистрации на форуме:
29 сен. 2001
Да тут целый ряд причин был:
1) так значительно безопаснее - можно быть точно уверенным, что какую-нибудь гадость туда не зальют. А при хранении в виде файлов нужно знать все возможные опасные расширения, но даже это не поможет - на отдельно взятых хостингах могут быть разрешены какие-нибудь нестандартные расширения выполняемых файлов.
А до варианта "хранить файлы в виде номер.dat, а потом отдавать их скриптом, который отдаст их с нормальным именем и mime-типом" я только сейчас додумался.
2) проблема автоматического создания каталогов. На многих хостингах PHP-скрипты выполняются от имени какого-нибудь там nobody, и при создании нового форума каталог для хранения файлов придется либо создавать вручную, либо разрешать корень форума на запись всем, что очень нежелательно. (Опять же, только что пришло в голову: а ведь можно сделать подкаталог uploads, требовать разрешения его на запись при установке и создавать каталоги в нем).
3) предполагалась, что эта возможность будет использоваться достаточно редко и файлы будут небольшими. Кроме того, таблица File используется отдельно и полностью независимо от всех остальных, а как показала практика, основные "торможения" начинаются из-за блокировки таблиц.

А насчет аватаров ты загнул... Зачем такое надо? Могу привести как минимум три причины против: а) установка исходящих соединений на всех бесплатных хостингах (равно как и на некоторых платных) просто запрещена, б) закачка займет время, в) файлы будут занимать место. А преимущества от такого решения какие?

---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно!
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3299
Рейтинг пользователя: 70


Ссылка


Дата регистрации на форуме:
29 сен. 2001
Хотя переделать будет не так уж сложно (весь процесс сохранения аттачей сконцентрирован в процедуре process_post, также потребуются еще мелкие изменения в stdforum.php и в file.php), но только для новых форумов. А вот со старыми начнутся проблемы - придется писать отдельный конвертор.

---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно!
Gram
Администратор

Gram
Откуда: Нижний Новгород
Всего сообщений: 1011
Рейтинг пользователя: 38


Ссылка


Дата регистрации на форуме:
23 июля 2003

XXXX Pro написал:
[q]
а ведь можно сделать подкаталог uploads, требовать разрешения его на запись при установке и создавать каталоги в нем
[/q]

Так везде и сделано.


XXXX Pro написал:
[q]
А преимущества от такого решения какие?
[/q]

Для админа никакких. А вот представь к примеру, что тот хостинг, на котором лежит чужой аватар загнется/упадет. В результате аватар грузится не будет, а это совсем некрасиво. В общем, это решит проблему с тем, что аватар будет грузится всегда.
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3299
Рейтинг пользователя: 70


Ссылка


Дата регистрации на форуме:
29 сен. 2001
Видимо, у нас с тобой изначальное отношение немного разное... На мой взгляд, то, что у пользователя есть аватар - это нужно самому пользователю, а не админу форума. А значит, что если пользователь кладет аватар "снаружи", то он берет ответственность за его отображение на себя, и если его хостинг падает и аватар перестает отображаться, то это уже проблмы самого пользователя.
Кстати, лично я предпочитаю внешний аватар еще по одной причине - централизация управления этим самым аватаром: если мне вдруг придет в голову его сменить, то мне достаточно перезакачать файл, а если сделать так, как ты предлагаешь, то пришлось бы обходить все форумы и редактировать свой профиль, чтобы новый аватар перезагрузился.

---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно!
<<Назад  Вперед>>Модераторы: aerograf, wsxПечать
Intellect Board — cистема управления сайтом »   Планы развития Intellect Board »   Работа IntB с файлами(фото, аватары, аттачи к постам и др.)
RSS

1 посетитель просмотрел эту тему за последние 10 минут
В том числе: 1 гость, 0 скрытых пользователей

Последние RSS
Ограничение доступа
не отображаются разделы
Архив версий
Установка стиля на Intellect Board 2.22
Завершилась работа над новой версией 3.00

Самые активные 5 тем RSS


Время выполнения скрипта: 0.0702. Количество выполненных запросов: 17, время выполнения запросов 0.0000
Creative Commons License Rambler's Top100 Rambler's Top100 Рейтинг@Mail.ru Valid HTML 4.01 Transitional Valid CSS!