atis2345
@atis2345
PHP developer

Где лучше хранить иформацию о каталогах?

Штука такая.
На сервер постоянно закачивают множество файлов в связи с чем возникает необходимость группировать файлы по папкам ибо 10тысяч файлов в 1 директории это плохо.
Был написан скрипт автоматического создания каталогов/подкаталогов (уровней вложенности может быть очень много!)
И тут встала проблема, как хранить данные о том в какой каталог грузить файлы для текущего пути?
Например:
/files/dir1/
/files/dir2/dir1/
/files/dirName/dir43/

И все в таком плане.
Хранить все в базе наилучший и наилегчайший способ но мне хотелось бы услышать Ваш вариант реализации :)
  • Вопрос задан
  • 150 просмотров
Решения вопроса 1
Комментировать
Пригласить эксперта
Ответы на вопрос 3
e_svirsky
@e_svirsky
Web Developer
у вас же в базе хранятся данные об файлах? почему бы не хранить там же полный путь к файлу с каталогом?
с другой стороны - смотря где это у вас используется. Если в UI есть реализация зачитывания структуры каталогов - то и базе тогда не нужно ничего хранить..
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
1. Создаёте двух-трёхуровневую структуру каталогов с именами 00-FF на каждом уровне. Два уровня дают 65536 каталогов нижнего уровня, три - 16777216 каталогов. Можно не создавать сразу все каталоги, а генерировать их по мере надобности.
2. Для сохранения файла считаете его md5, и берёте первые пары символов как имена каталогов. Скажем, если md5 = '1afa148eb41f2e7103f21410bf48346c' то путь будет '1a/fa/14/'. Таким образом файлы окажутся разбросанными по папкам.
3. Генерируете uinqid, cохраняете файл в полученном ранее каталоге под этим uinqid по полученному пути.
4. Записываете полный путь и оригинальное имя файла в базу данных.
Ответ написан
Комментировать
65536
@65536
{00-ff}/{00-ff}/{00-ff}/{00-ff}/{00000000-ffffffff}.{ext}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы