Друпал для сайта фотобанка

Главные вкладки

Аватар пользователя Manas Manas 30 ноября 2012 в 15:09

Добрый день уважаемое сообщество. Возникла вот такая задача: необходимо создать внтурикорпоративный фотобанк, чтобы каждый пользователь мог загружать и управлять своими (и только своими) фотографиями. Каждая фотография может принадлежать одной или нескольким категориям. Всего планируется порядка 10-15 тыс. фотографий. В дальнейшем, возможно понадобится создать комментарии для фотографий. Корзина не нужна.
Вопрос: подойдет ли друпал для такой задачи? Если да, то какую ветку лучше использовать, и на какие расширения стоит обратить внимание. Заранее благодарю за ответы.

Комментарии

Аватар пользователя dgastudio dgastudio 30 ноября 2012 в 15:26

сделать можно, но это будет в рамках друпала, его админки, специфики работы и т.п.

то есть, легкости и удобства работы как на istockphoto вы не добъетесь с друпалом.

Аватар пользователя sg85 sg85 30 ноября 2012 в 16:10

Делал такое, только в разы сложнее(правда я программист)

"kervi" wrote:
то есть, легкости и удобства работы как на istockphoto вы не добъетесь с друпалом.

да как нефиг, только кодить придется Wink

Аватар пользователя dgastudio dgastudio 2 декабря 2012 в 13:30

угу, дофига кодить... вопрос, нафига тогда друпал здесь нужен? проще (и правильнее) написать свою систему.

Аватар пользователя andreypaa andreypaa 30 ноября 2012 в 16:37

То что вы описали, можно сделать стандартными средствами + views.
Думаю сейчас имеет смысл только 7-ую использовать.

Аватар пользователя gorr gorr 30 ноября 2012 в 16:42

На мой взгляд, если не надо, чтобы права доступа для скачивания картинок были различные для различных пользователей, то подойдет, если же перед тем как отдать каждую картинку надо права проверять, то только если относительно немного запросов на скачивание картинок, ибо на каждую скачку весь друпал будет загружаться (если конечно это его штатными средствами реализовывать - drupal private files system).

Аватар пользователя Crea Crea 4 декабря 2012 в 6:31

gorr wrote:
На мой взгляд, если не надо, чтобы права доступа для скачивания картинок были различные для различных пользователей, то подойдет, если же перед тем как отдать каждую картинку надо права проверять, то только если относительно немного запросов на скачивание картинок, ибо на каждую скачку весь друпал будет загружаться (если конечно это его штатными средствами реализовывать - drupal private files system).

Во-первых, есть x-sendfile и подобное.
Во-вторых, времена, когда экономили CPU проходят. Современные процессоры уже настолько мощные, что можно себе позволить отдавать файлы через php, а сервера, как правило, упираются в диски, RAM, и сеть. У меня на сервере, например, i7-920 большую часть времени простаивает, только когда iowait растет, начинаются тормоза.
Я полагаю, фотобанк не будет работать на шаред хостинге Smile

Аватар пользователя Manas Manas 2 декабря 2012 в 14:26

Я потому и спрашиваю, при условии, что с этой системой я совсем не знаком: стоит ли связываться имея такую задачу, с друпалом, есть ли какие-то похожие решения.
А ответы типа "Я хочу полететь на Луну..." ничего в себе не несут кроме собственного апломба, уж извините.

Аватар пользователя VasyOK VasyOK 3 декабря 2012 в 7:36

Manas, я просто образно выразился.
Лично мне не известны никакие объективные причины против использования Drupal для вашей задачи. Сомневаюсь что они есть.

На вопрос использовать ли Друпал должен отвечать либо тот кто делает либо тот кто заказывает. Попробуйте сделать или заказать сначала маленький сайт, потом его увеличить. узнаете насколько вам подойдет Друпал.

Аватар пользователя sg85 sg85 3 декабря 2012 в 9:04

Вообще, именно по сабжу вижу обычную связку D6+Node Gallery(+,возможно, Node Access) + пара вспомогательных модулей, хз есть ли аналоги Node Gallery(в этом модуле именно тот функционал, что Вы описали) в 7 ядре, но должны быть, т.е. без единой строчки кода.

А если рассматривать конкретно istockphoto, я собирал подобное, можно собрать на базе комерца или убера(без разницы), но лучше делать свой велосипед магазина(т.е. свою систему, как уже говорил kervi), ибо в случае велосипеда кода будет раза в 3 меньше(т.к. этих 2х товарищей надо будет допиливать огромным числом костылей и в некоторых местах хакать(иначе привет таймауты по всему сайту)), в этом случае друпал как минимум не хуже любого другого фреймворка, однако не придется изобретать все остальное, например систему управления пользователями, и прочее, ибо за эту часть друпал будет отвечать как CMS, а за магазин как фреймворк, НО, если не знать drupal api на уровне джедая, то быстрее и правильнее будет собрать сие на том, что знаете(именно на уровне джедая), если же не знаете ничего, то drupal, по моему мнению, прекрасно подходит(это если Вы знаете(на профессиональном уровне), как минимум, PHP и MySQL), однако приготовьтесь к тому, что у Вас уйдет минимум пол года(на зенде, к примеру, мне кажется, что времени уйдет больше, ибо одной тыщей строчек кода там не отделаешься) на то, чтобы, например, сделать аналог istockphoto. Но не исключаю, что можно найти уже готовую CMS под эти конкретные нужды.

Аватар пользователя Manas Manas 3 декабря 2012 в 22:08

Всем спасибо за ответы. Думаю, что попробую. Тем более уже давно хотел ознакомиться с данной системой.

Аватар пользователя gorr gorr 4 декабря 2012 в 13:20

"Crea" wrote:
Во-первых, есть x-sendfile и подобное.

Система отдачи друпалом приватных файлов не использует такие вещи, а я делал ремарку
"gorr" wrote:
(если конечно это его штатными средствами реализовывать - drupal private files system).

"Crea" wrote:
Современные процессоры уже настолько мощные, что можно себе позволить отдавать файлы через php, а сервера, как правило, упираются в диски, RAM, и сеть.

Если использовать механизм, встроенный в друпал, то будет RAM расходоваться во время загрузки файла.

у x-sendfile есть небольшой минус в том, что наше приложение не знает скачал пользователь файл или нет. Это имеет значение если нужно отдать пользователю файл один и только один раз, и если связь с пользователем прервалась во время отдачи, а у нас уже записалось в базу, что оплаченный файл был отдан, то больше он его не получит.

Аватар пользователя Crea Crea 4 декабря 2012 в 15:46

Quote:
Система отдачи друпалом приватных файлов не использует такие вещи

Ядро много чего не умеет из коробки. В моем понимании, такой крупный проект, как фотобанк, может использовать любые кастомные модули, а если надо, и похакать ядро, или написать свой обработчик файловой системы, который не делает полный бутстрап.
Готовые решения есть http://drupal.org/project/xsend правда я сам не пробовал. Не было такой задачи..

Quote:

Если использовать механизм, встроенный в друпал, то будет RAM расходоваться во время загрузки файла.

Разумеется. Но есть такая штука, как буферизация в веб-сервере (например в nginx). Для маленьких и средних файлов самое то. А большие все равно через x-sendfile нужно. Суть в том что процесс php не занимается обслуживанием доставки до (медленного) клиента. Он может жрать память, но молотить при этом гигантское кол-во файлов. Только размер буфера побольше нужен (вернее, достаточно большой).
При такой конфигурации нагрузка по RAM смещается в сторону nginx. Т.е. это все равно круто, если файлы маленькие, а бутстрап тяжелый т.е. сэкономленная на бутстрапах память должна перекрывать расход на буферы nginx.

Quote:

у x-sendfile есть небольшой минус в том, что наше приложение не знает скачал пользователь файл или нет. Это имеет значение если нужно отдать пользователю файл один и только один раз, и если связь с пользователем прервалась во время отдачи, а у нас уже записалось в базу, что оплаченный файл был отдан, то больше он его не получит.

У меня есть большое подозрение, что из-за возможной буферизации эту информацию в любом случае нельзя получить со 100% надежностью.

Аватар пользователя sg85 sg85 4 декабря 2012 в 16:03

"gorr" wrote:
Если использовать механизм, встроенный в друпал, то будет RAM расходоваться во время загрузки файла.

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

"gorr" wrote:
у x-sendfile есть небольшой минус в том, что наше приложение не знает скачал пользователь файл или нет. Это имеет значение если нужно отдать пользователю файл один и только один раз, и если связь с пользователем прервалась во время отдачи, а у нас уже записалось в базу, что оплаченный файл был отдан, то больше он его не получит.

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

Аватар пользователя gorr gorr 4 декабря 2012 в 16:08

"Crea" wrote:
Готовые решения есть http://drupal.org/project/xsend правда я сам не пробовал. Не было такой задачи..

Передо мной тоже не стояла такая задача, про такой модуль не знал, надо будет из интереса взглянуть на него, спасибо. Правда он только под 6-ку.

Аватар пользователя gorr gorr 4 декабря 2012 в 16:29

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

1) Высокого разрешения фотографии, доступ к которым нужно ограничивать, закачиваются в приватную файловую директорию
2) Создаются превьюшки с вотермарками и уменьшенным разрешением и кладутся в общедоступную файловую директорию
3) При открытии доступа к какому-то файлу для какого-то юзера делаем запись себе в таблицу uid | fid, что файл куплен.
4) При запросе на скачку стокового фото отдаем его после проверки записи в своей таблице, через x-sendfile
5) Гарантировать однократную скачку мы фактически не можем, иначе есть шанс лишить пользователя купленного фото при разрыве связи, но можем удалять запись из таблицы спустя некоторое небольшое время

Аватар пользователя alexo alexo 24 июля 2020 в 12:04

1) Высокого разрешения фотографии, доступ к которым нужно ограничивать, закачиваются в приватную файловую директорию
2) Создаются превьюшки с вотермарками и уменьшенным разрешением и кладутся в общедоступную файловую директорию

Спасибо. Как положить в приватную папку, понятно. А как сделать, чтобы превьюшки были в общедоступной паке при этом?

Аватар пользователя sg85 sg85 4 декабря 2012 в 16:48

на самом деле достаточно посмотреть реализацию uc_file(в ядре уберкарта, вроде) или dc_fileчтототам, логика в в данном случае у них будет одинаковая. Т.е. сей велосипед уже давно изобретен, в плане архитектуры.