Автокликер
Блог
Библиотека
Еще...

Авто, Мото

Автострахование

Выбор автомобиля, мотоцикла

ГИБДД, Обучение, Права

ПДД, Вождение

Оформление авто-мото сделок

Сервис, Обслуживание, Тюнинг

Прочие Авто-темы

Бизнес, Финансы

Банки и Кредиты

Бухгалтерия, Аудит, Налоги

Макроэкономика

Недвижимость, Ипотека

Производственные предприятия

Собственный бизнес

Страхование

Остальные сферы бизнеса

Города и Страны

Вокруг света

Карты, Транспорт, GPS

Климат, Погода, Часовые пояса

Коды, Индексы, Адреса

ПМЖ, Недвижимость

Прочее о городах и странах

Гороскопы, Магия, Гадания

Гадания

Гороскопы

Магия

Сны

Прочие предсказания

Досуг, Развлечения

Игры без компьютера

Клубы, Дискотеки

Концерты, Выставки, Спектакли

Охота и Рыбалка

Рестораны, Кафе, Бары

Советы, Идеи

Хобби

Прочие развлечения

Еда, Кулинария

Вторые блюда

Готовим

Готовим детям

Десерты, Сладости, Выпечка

Закуски и Салаты

Консервирование

На скорую руку

Напитки

Первые блюда

Пикник

Покупка и выбор продуктов

Соусы, Приправы

Торжество, Праздник

Прочее кулинарное

Животные, Растения

Дикая природа

Домашние животные

Комнатные растения

Сад-Огород

Прочая живность

Знакомства, Любовь, Отношения

Дружба

Знакомства

Любовь

Отношения

Расставания

Прочие взаимоотношения

Искусство и Культура

Архитектура, Скульптура

Живопись, Графика

Кино, Театр

Литература

Музыка

Прочие искусства

Компьютеры, Интернет

Дизайн, Верстка

Железо

Интернет

Компьютерные и Видео игры

Программирование

Программное обеспечение

Прочее компьютерное

Красота и Здоровье

Баня, Массаж, Фитнес

Болезни, Лекарства

Врачи, Клиники, Страхование

Детское здоровье

Загар, Солярий

Здоровый образ жизни

Коррекция веса

Косметика, Парфюмерия

Маникюр, Педикюр

Салоны красоты и СПА

Уход за волосами

Прочее о здоровье и красоте

Отвечает врач

Наука, Техника, Языки

Гуманитарные науки

Естественные науки

Лингвистика

Техника

Образование

Домашние задания

ВУЗы, Колледжи

Детские сады

Школы

Дополнительное образование

Образование за рубежом

Прочее образование

Общество, Политика, СМИ

Общество

Политика

Средства массовой информации

Прочие социальные темы

Путешествия, Туризм

Документы

Отдых в России

Отдых за рубежом

Самостоятельный отдых

Туристические компании

Прочее туристическое

Работа, Карьера

Кадровые агентства

Написание резюме

Обстановка на работе

Отдел кадров, HR

Подработка, временная работа

Профессиональный рост

Смена и поиск места работы

Трудоустройство за рубежом

Прочие карьерные вопросы

Семья, Дом, Дети

Беременность, Роды

Воспитание детей

Домашняя бухгалтерия

Домоводство

Загородная жизнь

Мебель, Интерьер

Организация быта

Свадьба, Венчание, Брак

Строительство и Ремонт

Прочие дела домашние

Свадебные советы

Спорт

Автоспорт

Теннис

Футбол

Хоккей

Зимние виды спорта

Экстрим

Другие виды спорта

Занятия спортом

События, результаты

Спортсмены

Стиль, Мода, Звезды

Мода

Светская жизнь и Шоубизнес

Стиль, Имидж

Прочие тенденции стиля жизни

Товары и Услуги

Идеи для подарков

Мобильные устройства

Офисная техника

Техника для дома

Прочие промтовары

Сервис, уход и ремонт

Прочие услуги

Философия, Непознанное

Мистика, Эзотерика

Психология

Религия, Вера

Философия

Прочее непознанное

Фотография, Видеосъемка

Выбор, покупка аппаратуры

Обработка видеозаписей

Обработка и печать фото

Уход за аппаратурой

Техника, темы, жанры съемки

Прочее фото-видео

Юридическая консультация

Аграрное право

Административное право

Военная служба

Гражданское право

Жилищное право

Конституционное право

Паспортный режим, регистрация

Право социального обеспечения

Семейное право

Трудовое право

Уголовное право

Финансовое право

Экологическое право

Прочие юридические вопросы

Юмор

Юмор

Другое

Другое

Хранение большого количества файлов в папке PHP. Как хранить фото на сервере? Дерево папок

Сколько файлов можно хранить в папке?
Организация хранения большого количества файлов на сервере php/

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

Для решения этой задачи многие программисты берут md5 имени файла f789f789abc898d6892df98d09a8f8, после чего разбивают имя примерно таким образом:

/f7/89/f789abc898d6892df98d09a8f8.jpg

Математика тут очень проста - один символ это 16 вариантов.
Таким образом 2 символа это уже 16*16=256 вариантов.
В нашем случае у нас 2 вложенности по 2 символа, таким образом максимальное количество папок будет 256*256=65536 папок.
Если нам потребуется сохранить 1000000 файлов то число файлов в каждой папке не превысит 1000000/65536=15 файлов.

Да, вариант прост, но что если нам требуется не только хорошо сохранять файлы, но и еще быстро их находить?

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

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

Вот какую структуру создает класс:

Древовидная структура. Хранение много файлов в папке.

Чтобы посчитать максимально число файлов которое уместится в этой структуре нужно возвести максимальное количество файлов в папке в степень количества ветвей плюс один.

На изображении мы видим 2 ветви и по 3 файла в каждой папке.
Таким образом 3 нужно возвести в степень 2+1 - 3*3*3=27 файлов.

Для сохранения не более 1000000 файлов в такой структуре нам хватит 2 ветви по 100 файлов в каждой папке (100*100*100).

В класс нужно передать массив параметров - путь к папке где будет строиться дерево, максимальное число файлов в папке, число ветвей, либо можно применить паттерн максимального числа файлов, который уже был заранее просчитан - bigint, int, mediumint, smallint:

array('upload_dir'=>Q_PATH.'/uploads/','max_file_count'=>1000,'branches'=>2,'pattern'=>'')

Сам класс можно скачать по ссылке:
Класс построения дерева папок


Для варианта социальной сети описанной выше, требуется 2 раза использовать класс: вначале для построения дерева папок, потом для построения в каждой папке дерева для файлов.
Автор: admin
27.06.2014 04:05:05
Это главная тема

Исправления:
from cache
Комментарии могут добавлять только авторизованные пользователи