Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хранение пользовательских файлов, на сервере. Файлов много 
:(
    Опции темы
 
Хранение пользовательских файлов
Все в одной дирректории [ 1 ]  [12.50%]
Создавать дирректории по ID пользователя, который загрузил [ 2 ]  [25.00%]
Находил в интернете идею создать поддирректории с названием первого символа названия хранимого файла [ 3 ]  [37.50%]
Другое [ 2 ]  [25.00%]
Всего проголосовавших: 8
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
Smorodin
Дата 4.1.2011, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрейший
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 10.4.2006
Где: Пермь

Репутация: нет
Всего: 1



Проект ориентирован на закачку файл пользователями. То есть файлов будет много. Файлы хранятся выше www дирректории (ОС - debian). Имена файлов - md5 по определенному алгоритму. Есть таблица в БД содержащая информацию по каждому файлу. При запросе файла, после прохождения проверки на права доступа к файлу, выдается пользователю скриптом в том виде, в каком был загружен.
Как лучше организовать хранение файлов?
1) Все в одной дирректории
2) Создавать дирректории по ID пользователя, который загрузил
3) Находил в интернете идею создать поддирректории с названием первого символа названия хранимого файла
4) Другое

Что посоветуете?

В данный момент уже есть необходимость размещения 3Гб небольших файлов.


--------------------
Сделать можно все, только вопрос - когда?
PM MAIL Skype   Вверх
IgorIV
Дата 5.1.2011, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



дата в названии директории
PM MAIL   Вверх
ayax2005
Дата 5.1.2011, 01:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


echo $smile
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 17.4.2008
Где: Питер

Репутация: 2
Всего: 11



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

1. Хранение всех файлов в одной директории накладно по скорости - процу проще сканировать небольшие объёмы файлов (где-то до 5000 файлов не обломно хранить в одном каталоге, но думаю у вас будет больше).

2. Создавать ли директории под конкретных пользователей - да, но само собой при загрузке первого файла ,а не при регистрации. Вообще, я думаю будут ещё и другие разделения - по типу или назначению изображений; возможно вы захотите добавить ещё и хранение других файлов - лучше задуматься на этапе проектирования и разделить и эти каталоги; Но какая будет вложенность: User->TypeFile->Img или TypeFile->User->Img и т.п. должна определять структура вашего сайта.

3.Формирование директории по имени файла - лишняя загрузка на хард  в плане скачков по директориям. Этот вариант подходит для систем с неструктурированным контентом.

4.Т.к. при большом количестве файлов/посещаемости ваш хард не будет жить долго, всё это дело изначально нужно хранить на отдельном сервере.

Нужно постараться оценить "родство"  файлов - логично, что файлы, которые будут отображаться на одной странице (в альбоме пользователя, к примеру) должны храниться в одной директории. Если имена файлов вы формируете по md5 с солью - они у вас не будут совпадать.
Длинна имён папок и глубина вложенности должна зависеть от количества файлов, пользователей, назначения и т.д.

Сам путь к файлу вряд ли нужно хранить в БД - он должен высчитываться алгоритмом. На сервере изображений нужно будет настроить алиасы в ngx_http_core_module что бы на самой сранице пути оставались красивые и самые умные не прошарили от греха структуру ваших каталогов.



Это сообщение отредактировал(а) ayax2005 - 5.1.2011, 01:26


--------------------
все вопросы - из-за неверной формулировки задачи
PM MAIL ICQ   Вверх
Smorodin
Дата 5.1.2011, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрейший
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 10.4.2006
Где: Пермь

Репутация: нет
Всего: 1



Цитата(ayax2005 @  5.1.2011,  04:24 Найти цитируемый пост)
посчитать размер и количество постоянно хранимых файлов

На январь план примерно 10Гб и около 20000 файлов.


Цитата(ayax2005 @  5.1.2011,  04:24 Найти цитируемый пост)
1. Хранение всех файлов в одной директории накладно по скорости - процу проще сканировать небольшие объёмы файлов (где-то до 5000 файлов не обломно хранить в одном каталоге, но думаю у вас будет больше).

Вот и задумался =)


Цитата(ayax2005 @  5.1.2011,  04:24 Найти цитируемый пост)
2. Создавать ли директории под конкретных пользователей - да, но само собой при загрузке первого файла ,а не при регистрации

Полностью согласен
Цитата(ayax2005 @  5.1.2011,  04:24 Найти цитируемый пост)
Вообще, я думаю будут ещё и другие разделения - по типу или назначению изображений; возможно вы захотите добавить ещё и хранение других файлов - лучше задуматься на этапе проектирования и разделить и эти каталоги; Но какая будет вложенность: User->TypeFile->Img или TypeFile->User->Img и т.п. должна определять структура вашего сайта.

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

Цитата(ayax2005 @  5.1.2011,  04:24 Найти цитируемый пост)
3.Формирование директории по имени файла - лишняя загрузка на хард  в плане скачков по директориям. Этот вариант подходит для систем с неструктурированным контентом.

Понял =)


Цитата(ayax2005 @  5.1.2011,  04:24 Найти цитируемый пост)
Нужно постараться оценить "родство"  файлов - логично, что файлы, которые будут отображаться на одной странице (в альбоме пользователя, к примеру) должны храниться в одной директории.

Они не будут отображаться. Просто каталог файлов по категориям. Категории создаются пользователями.



Цитата(ayax2005 @  5.1.2011,  04:24 Найти цитируемый пост)
Если имена файлов вы формируете по md5 с солью - они у вас не будут совпадать.

С солью. И идет проверка на существование, на всякий случай =) Если _мало-ли_ существует, соль меняем.


Цитата(ayax2005 @  5.1.2011,  04:24 Найти цитируемый пост)
На сервере изображений нужно будет настроить алиасы в ngx_http_core_module что бы на самой сранице пути оставались красивые и самые умные не прошарили от греха структуру ваших каталогов.

www дирректория: /var/www/user/data/www/domain.com Дирректория файлов: /var/www/user/data/files То есть из браузера получить доступ к файлу - никак. Только одним способом: domain.com/downloader/file-123 Который перед выдачей файла еще проверит, можно ли данный файл выдавать данному пользователю (строгая политика доступа к категориям по нескольким параметрам).


--------------------
Сделать можно все, только вопрос - когда?
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0808 ]   [ Использовано запросов: 24 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.