[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: хранение большого кол-ва изображений
bel0m0r
Может быть тема не в том разделе, так что заранее извиняюсь. Мне требуется хранить на сайте очень большое кол-во файлов. Это изображения, музыка и т.д. Как лучше организовать хранение что бы это не вызывало нагрузку на сервер, а также пользователь не имел прямого доступа к этим файлам?
P.S. Каждый файл относится к конкретному пользователю



Спустя 53 минуты, 25 секунд (22.07.2011 - 23:15) Renden написал(а):
bel0m0r
Нагрузка всеравно будет, если небудет хватать мощности используй несколько серверов. Например 1 сервак под сайт, другой под файлы.
Цитата
а также пользователь не имел прямого доступа к этим файлам

Отдавай файлы через php.
Цитата
P.S. Каждый файл относится к конкретному пользователю

При отдаче через php можешь подсовывать в сылку индификатор пользователя например. Т.е название файла мона генерить id_пользователя+id_файла+время+чето_еще и все это в md5 например.

Спустя 1 час, 50 минут, 22 секунды (23.07.2011 - 01:06) VELIK505 написал(а):
Цитата (bel0m0r @ 22.07.2011 - 19:22)
Может быть тема не в том разделе, так что заранее извиняюсь. Мне требуется хранить на сайте очень большое кол-во файлов. Это изображения, музыка и т.д. Как лучше организовать хранение что бы это не вызывало нагрузку на сервер, а также пользователь не имел прямого доступа к этим файлам?
P.S. Каждый файл относится к конкретному пользователю

Раскидывай по поддоменам. Для изображений создай поддомен img.mysite.ru и грузи туда картинки.
Для музыки создай mus.mysite.ru и грузи туда музыку. Можно поддомены на выделеные айпи поставить. А доступ никак не закрыть по прямому вызову из адресной строки так как браузер это тоже должен видеть!

Спустя 35 минут, 48 секунд (23.07.2011 - 01:41) DeeKeiD написал(а):
.htaccess
Denny From All

Спустя 1 час, 5 минут, 37 секунд (23.07.2011 - 02:47) Nikitian написал(а):
Цитата (VELIK505 @ 23.07.2011 - 01:06)
А доступ никак не закрыть по прямому вызову из адресной строки так как браузер это тоже должен видеть!

Можно.

Закрываем директорию с файлами.
Nginx.conf

location /files {
root /var/www/site.ru;
internal;
}

Делаем скрипт отдачи через внутренний редирект:

<?php
header("X-Accel-Redirect: /files/".basename($_GET['file']));die;

Разумеется, это пример. Если надо сделать контролируемое скачивание, то в этом скрипте всё и делайте, а это лишь то, что позволит скачать файл.

Об этом же

Спустя 6 часов, 4 минуты, 12 секунд (23.07.2011 - 08:51) VELIK505 написал(а):
Цитата (Nikitian @ 22.07.2011 - 23:47)
Цитата (VELIK505 @ 23.07.2011 - 01:06)
А доступ никак не закрыть по прямому вызову из адресной строки так как браузер это тоже должен видеть!

Можно.

Закрываем директорию с файлами.
Nginx.conf

location /files {
root /var/www/site.ru;
internal;
}

Делаем скрипт отдачи через внутренний редирект:

<?php
header("X-Accel-Redirect: /files/".basename($_GET['file']));die;

Разумеется, это пример. Если надо сделать контролируемое скачивание, то в этом скрипте всё и делайте, а это лишь то, что позволит скачать файл.

Об этом же

Ну это если на скачку если они не должны отображаться. А ему как я понял надо чтобы отображалось. Как правило в корни .htaccess
Options -Indexes

Спустя 1 час, 40 минут, 27 секунд (23.07.2011 - 10:32) bel0m0r написал(а):
Цитата (VELIK505 @ 22.07.2011 - 22:06)
Цитата (bel0m0r @ 22.07.2011 - 19:22)
Может быть тема не в том разделе, так что заранее извиняюсь. Мне требуется хранить на сайте очень большое кол-во файлов. Это изображения, музыка и т.д. Как лучше организовать хранение что бы это не вызывало нагрузку на сервер, а также пользователь не имел прямого доступа к этим файлам?
P.S. Каждый файл относится к конкретному пользователю

Раскидывай по поддоменам. Для изображений создай поддомен img.mysite.ru и грузи туда картинки.
Для музыки создай mus.mysite.ru и грузи туда музыку. Можно поддомены на выделеные айпи поставить. А доступ никак не закрыть по прямому вызову из адресной строки так как браузер это тоже должен видеть!

Спасибо за советы. Для ограничения доступа к файловому хранилищу остановился на .htaccess
Как лучше создать директории на каждом поддомене? Так как у каждого пользователя имеются собственные файлы. Или сливать все файлы в корень поддомена, а имена, принадлежность и т.д хранить в БД?

Спустя 1 час, 50 минут, 37 секунд (23.07.2011 - 12:22) ADiel написал(а):
Заметьте, на серверах действет ограничение на количество файлов в папке. Встречал ограничения от 6000 до 15000 файлов в одной папке.

Скрипты работали с превышением, но медленно и просмотреть через тот же mc все было нельзя, FTP так же обрезал результаты

Спустя 2 часа, 26 минут, 39 секунд (23.07.2011 - 14:49) bel0m0r написал(а):
Цитата (ADiel @ 23.07.2011 - 09:22)
Заметьте, на серверах действет ограничение на количество файлов в папке. Встречал ограничения от 6000 до 15000 файлов в одной папке.

Скрипты работали с превышением, но медленно и просмотреть через тот же mc все было нельзя, FTP так же обрезал результаты

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

Спустя 7 минут, 20 секунд (23.07.2011 - 14:56) ADiel написал(а):
на подпапки не распространяется. все равно, какой то у чет в бд будет, потому можно разделять по количеству или датам... как угодно

Спустя 9 часов, 15 минут, 47 секунд (24.07.2011 - 00:12) bel0m0r написал(а):
У меня будет выделенный сервер, значит если файлы будут распределены по подпапкам в главной папке поддомена (предполагается от 10 тыс файлов), виснуть не должно?

Спустя 9 часов, 49 минут, 22 секунды (24.07.2011 - 10:01) Guest написал(а):
Цитата (bel0m0r @ 23.07.2011 - 21:12)
У меня будет выделенный сервер, значит если файлы будут распределены по подпапкам в главной папке поддомена (предполагается от 10 тыс файлов), виснуть не должно?

2 поддомена делай для изображений и на поддоменах уже папки создавай для сортировки и всё будет норм

Спустя 10 минут, 28 секунд (24.07.2011 - 10:12) neadekvat написал(а):
ADiel, у меня в одном каталоге было около сотни тысяч файлов (ос - фряха). Потом вот раскидывал..

bel0m0r, понятие "папки" существует только в windows. Вообще же это "каталог", ибо даже "директория" - это уже извращенное английское слово типа "Уай", "Ху" и пр.

В общем, я думаю, верно мыслите. Можно банально создавать каталоги с именами 1, 2, 3... В них хранить фиксированное количество файлов. Каким количеством - это, пожалуй, больше экспериментальное число, в какой момент файловая система начинает офигевать.

Спустя 1 минута, 19 секунд (24.07.2011 - 10:13) neadekvat написал(а):
Цитата (Guest @ 24.07.2011 - 11:01)
2 поддомена делай для изображений и на поддоменах уже папки создавай для сортировки и всё будет норм

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

Спустя 6 минут, 44 секунды (24.07.2011 - 10:20) VELIK505 написал(а):
Цитата (neadekvat @ 24.07.2011 - 07:13)
Цитата (Guest @ 24.07.2011 - 11:01)
2 поддомена делай для изображений и на поддоменах уже папки создавай для сортировки и всё будет норм

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

Большая разница либо браузер грузит в 1 поток. Либо в 3 потока за 1 раз.
Когда станет много статики то поддомены на отдельный сервак и на отдельный айпи вынести.
А по папкам раскидывать надо чтобы в корне не копилось 20 000 изображений чтобы сервер быстрее отдавал что-либо выбирая из меньшего кол-ва.

Спустя 1 час, 54 секунды (24.07.2011 - 11:21) ADiel написал(а):
Браузер загружает html, а потом в несколько потоков все остальное.

Для хранения файлов лучше использовать несколько SAS жестких дисков и раскидывать файлы равномерно для реализации многоканального чтения, но тут уже зависит от конкретной задачи. Если VDS или VPS, некуда рыпаться.

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

На момент запуска файлового хранилища, не важно ничего. Только для удобства можно по папкам файлы раскидать и все

Если у вас хостинг с 2-4 терабайтами места, то хостер уже позаботился о SAS дисках и многоканальном чтении/записи

Спустя 8 часов, 9 минут, 49 секунд (24.07.2011 - 19:31) bel0m0r написал(а):
для каждого пользователя будет создаваться отдельный каталог при регистрации для хранения файлов на поддомене. А хранить статику на поддомене я и хотел что бы потом безболезненно в случае чего перенести файлы на другой сервер/диск.

Спустя 25 минут, 19 секунд (24.07.2011 - 19:56) ADiel написал(а):
Если пользователь не загрузит файлов больше, чем позволяет сервер в одну папку, то все ок.

Спустя 1 час, 39 минут, 40 секунд (24.07.2011 - 21:36) bel0m0r написал(а):
для каждого пользователя ограничено дисковое пространство и маловероятно что у каждого будет более 100 файлов


_____________
ICQ 605271181
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.