2013-03-03 4 views
0

Так что я хочу, чтобы хранить около 4k изображений в одном каталоге, например: uploads/uniqid()./file.jpg и uploads/uniqid()./thumb/file.jpgСохранение 4000 файлов изображений в каталоге

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

Я хочу иметь таблицу, в которой я храню имя активного каталога, в котором есть менее 4 тыс. Изображений.

Поэтому, когда пользователь загружает изображение, я поеду в этот каталог, подсчитывая файлы, и если он меньше 4k, я загружу изображение там, если это 4000 изображений в каталоге, я создам новое имя каталога используя uniqid() и помещаем файл в новый каталог, я также обновляю таблицу с новым именем активного каталога.

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

ответ

0

Альтернативой подсчету файлов было бы добавить поле счетчика (то есть: автоинкремент) в таблицу и вставить строку в таблицу, когда пользователь загрузит файл. Затем вы можете использовать mysql_insert_id(), чтобы получить идентификатор для строки, которую вы только что вставили.

Затем просто добавьте следующее, чтобы увидеть, если вам нужно создать новый каталог:

if((mysql_insert_id() % 4000) === 0) { 
    //create new dir name 
    //insert new dir name into table as active dirname 
    //add image to new folder 
} 
else { 
    //add image to active directory 
} 
+0

Да, я думал об этом, я могу иметь свою таблицу, как это: 'dir_name | files', и каждый раз, когда я делаю загрузку, я делаю a ++, и когда я создаю новую папку, я сбрасываю счетчик, поэтому вы думаете, что моя основная идея в порядке, я могу пойти с этим – Uffo

+0

. Не сбрасывайте идентификатор, просто используйте auto incremental id. Оператор модуля возвращает 0 каждые 4000 элементов. Обновил мой ответ, чтобы сделать его более понятным. Используя автоматический инкрементный идентификатор, вы также получите простой способ получить общее количество файлов. –