Intellect Board — cистема управления сайтомПостроение сайта на основе форума |
Intellect Board — cистема управления сайтом » Планы развития Intellect Board » Работа IntB с файлами(фото, аватары, аттачи к постам и др.) |
<<Назад Вперед>> | Модераторы: aerograf, wsx | Печать |
andrey_fisher |
Профиль | Сообщить модератору | Игнорировать
NEW! Сообщение отправлено: 21 ноября 2005 15:20 Сообщение отредактировано: 21 ноября 2005 15:21
Тема создана по мотивам этого поста: http://intboard.ru/index.php?t=889&p=5116#pp5116 Вкратце. В текущей версии форума все файлы, загружаемые на форум со сторны пользователя - а это как минимум ФОТО, АВАТАРЫ, И АТТАМЕНТЫ к сообщениям - хранятся в бинарном виде в базе данных. Это весьма спорное решение, по многим причинам, ссылку на дискуссию по этому вопросу на РуБорде я найду и выложу чуть позже. Отмечу, на мой взгляд, две ключевые причины. Одну для владельца\администратора сайта, вторую для пользователя. Первая. Со стороны сервера - такой принцип хранения файлов порождает многократное увеличение нагрузки на базу данных. С одной стороны - резкое увеличение размера БД, с другой - увеличение загрузки при выполнении запросов, опять же из-за размера(веса) выборок. К чему это может привести? К увеличению требований к хостингу. Для некоммерческих проектов это - возможный удар по бюджету.. Прецеденты подобного мне знакомы. Вторая. Со стороны пользователя - отсутствие кэширования изображений как минимум, и *возможные* проблемы с сохранением\закачкой файлов как максимум. Пирчем кэширование аватаров Есть и другие причины.. ссылки я постараюсь предоставить. Преимущества нынешнего варианта мне выделить сложно, думаю, это вопрос к разработчикам. В связи со всем этим - предлагаю к обсуждению вопрос. Стоит ли изменить принцип работы движка с файлами? идеи, предложения, уточнения - принимаются здесь. мои 5 копеек. стоит вернуться к классической схеме работ: сами файлы (изображения и др.) хранятся в отдельной(ых) папке(ах) на сервере, вне зоны выполнения скриптов(допустим CHMOD 644 или как-то еще) - в целях безопасности. пути к файлам, ссылки на них хранятся в БД в нужных местах. |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик Откуда: Москва Всего сообщений: 3299 Рейтинг пользователя: 70 Ссылка Дата регистрации на форуме: 29 сен. 2001 |
Ну для PHP chmod 644 на большинстве хостингов ничем не поможет, там надо расширение .txt приписывать, либо класть файл .htaccess, запрещающий выполнение скриптов. Насчет проблем с закачкой: проблемы могут быть только при очень большом объеме данных (таком, что memory limit привысит), но такое в attach обычно не кладут. Кстати, скачивание у меня реализовано с поддержкой докачки, и корректной передачей имени файла и его размера, поэтому каких-либо проблем не предвидится. Насчет кеширования аватаров - можно попробовать решить эту проблему с помощью вывода дополнительных HTTP-заголовков. Таким образом, лично я считаю целесообразным только вынос из БД фотографий (что будет реализовано, но не ранее, чем в 2.20, а может быть и позже), так как они действительно способны создать существенную нагрузку на БД. ---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно! |
Gram
Администратор
Откуда: Нижний Новгород Всего сообщений: 1011 Рейтинг пользователя: 38 Ссылка Дата регистрации на форуме: 23 июля 2003 |
Оффтопик: кстати, аватар в любом случае должен выводится с домашнего сервера, даже если в профиле мы выводим URL (т.е. должна работать закачка аватара с указанного урла). считаю это наиболее ГРАМотным решением. XXXX Pro, мне вот интересно, почему выбор пал именно на БД в качестве хранилища для файлов. Это связанно лишь с неким единством в хранении данных или чем то еще? |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик Откуда: Москва Всего сообщений: 3299 Рейтинг пользователя: 70 Ссылка Дата регистрации на форуме: 29 сен. 2001 |
Да тут целый ряд причин был: 1) так значительно безопаснее - можно быть точно уверенным, что какую-нибудь гадость туда не зальют. А при хранении в виде файлов нужно знать все возможные опасные расширения, но даже это не поможет - на отдельно взятых хостингах могут быть разрешены какие-нибудь нестандартные расширения выполняемых файлов. А до варианта "хранить файлы в виде номер.dat, а потом отдавать их скриптом, который отдаст их с нормальным именем и mime-типом" я только сейчас додумался. 2) проблема автоматического создания каталогов. На многих хостингах PHP-скрипты выполняются от имени какого-нибудь там nobody, и при создании нового форума каталог для хранения файлов придется либо создавать вручную, либо разрешать корень форума на запись всем, что очень нежелательно. (Опять же, только что пришло в голову: а ведь можно сделать подкаталог uploads, требовать разрешения его на запись при установке и создавать каталоги в нем). 3) предполагалась, что эта возможность будет использоваться достаточно редко и файлы будут небольшими. Кроме того, таблица File используется отдельно и полностью независимо от всех остальных, а как показала практика, основные "торможения" начинаются из-за блокировки таблиц. А насчет аватаров ты загнул... Зачем такое надо? Могу привести как минимум три причины против: а) установка исходящих соединений на всех бесплатных хостингах (равно как и на некоторых платных) просто запрещена, б) закачка займет время, в) файлы будут занимать место. А преимущества от такого решения какие? ---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно! |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик Откуда: Москва Всего сообщений: 3299 Рейтинг пользователя: 70 Ссылка Дата регистрации на форуме: 29 сен. 2001 |
Хотя переделать будет не так уж сложно (весь процесс сохранения аттачей сконцентрирован в процедуре process_post, также потребуются еще мелкие изменения в stdforum.php и в file.php), но только для новых форумов. А вот со старыми начнутся проблемы - придется писать отдельный конвертор. ---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно! |
Gram
Администратор
Откуда: Нижний Новгород Всего сообщений: 1011 Рейтинг пользователя: 38 Ссылка Дата регистрации на форуме: 23 июля 2003 |
XXXX Pro написал: а ведь можно сделать подкаталог uploads, требовать разрешения его на запись при установке и создавать каталоги в нем Так везде и сделано. XXXX Pro написал: А преимущества от такого решения какие? Для админа никакких. А вот представь к примеру, что тот хостинг, на котором лежит чужой аватар загнется/упадет. В результате аватар грузится не будет, а это совсем некрасиво. В общем, это решит проблему с тем, что аватар будет грузится всегда. |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик Откуда: Москва Всего сообщений: 3299 Рейтинг пользователя: 70 Ссылка Дата регистрации на форуме: 29 сен. 2001 |
Профиль | Сообщить модератору | Игнорировать
NEW! Сообщение отправлено: 25 ноября 2005 13:07 Сообщение отредактировано: 25 ноября 2005 13:09
Видимо, у нас с тобой изначальное отношение немного разное... На мой взгляд, то, что у пользователя есть аватар - это нужно самому пользователю, а не админу форума. А значит, что если пользователь кладет аватар "снаружи", то он берет ответственность за его отображение на себя, и если его хостинг падает и аватар перестает отображаться, то это уже проблмы самого пользователя. Кстати, лично я предпочитаю внешний аватар еще по одной причине - централизация управления этим самым аватаром: если мне вдруг придет в голову его сменить, то мне достаточно перезакачать файл, а если сделать так, как ты предлагаешь, то пришлось бы обходить все форумы и редактировать свой профиль, чтобы новый аватар перезагрузился. ---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно! |
<<Назад Вперед>> | Модераторы: aerograf, wsx | Печать |
Intellect Board — cистема управления сайтом » Планы развития Intellect Board » Работа IntB с файлами(фото, аватары, аттачи к постам и др.) |
1 посетитель просмотрел эту тему за последние 10 минут |
В том числе: 1 гость, 0 скрытых пользователей |
Последние | |
Ограничение доступа не отображаются разделы Архив версий Установка стиля на Intellect Board 2.22 Завершилась работа над новой версией 3.00 |
Самые активные 5 тем | |