хранение картинок на сервере - универсальное и гибкое решение

ayrat9

Новичок
хранение картинок на сервере - универсальное и гибкое решение

очень интересуют Ваши мнения по указанному вопросу.
Планируется много модулей статьи, каталги товаров, галереи...
Интересна логика взаимосвязи между информацией (статья, запись о товаре. новость и т.д) и соответствующей картинкой/картинками.

Ранее был вариант, когда картинки именовались по, допустим, id новости. А самих записей об изображении в БД не было. Но такое решение не очень-то удобное.

Спасибо
 

Мутник

Новичок
делаешь имя картинке
PHP:
sha1(rand(1,1000000000)) . ".jpg";
и кидаешь все в одну папку images/ чтобы все лежало рядом и нигде не надо было думать, что к чему.... и особо не напрягаешься.

или такой вариант тебя не устраивает? %)

либо заводишь специальную таблицу в БД, куда кидаешь картинку, название и т.д., а в запись о новости, комменте и т.д. ставиь указатель на id записи о картинке. Вариантов море - берешь и делаешь..
 

Paxan

Новичёк
Мутник
есть ненулевая вероятность того, что, рандом совпадёт.
 

Мутник

Новичок
Paxan


знаешь, я прикола ради недавно тестик написал, который длился 4 часа, по сравнению и выявлению вероятности совпадения... на ОООЧЕНЬ много записей ничего не совпало..

а вообще, можно функцию написать, которая будет картинку называть...

Назвал, проверил подтвердил (или еще раз назвал, коли такая уже существует. ведь все в одном месте лежит и проверить несложно.)
 

ayrat9

Новичок
а если картинок будет 3-4 тысячи - и все в одной папке, скажется ли это на быстродействии вывода страницы на экран?

Хотя "быстодействие" довольно спорная тема, но все же...
 

Мутник

Новичок
ayrat9

3-4 тысячи - нет, а вот 300-400 тысяч, наверное больше ДА, чем нет... И то, нагрузка не на страницу, а на файловую систему.
 

SunDrop

Помощник поисков. робота
Либо хранишь всю картинку в базе в связной таблице,
либо создаешь подпапки - как id-шки меню, а в них ложишь картинки с рендомным именем (наприер еще и ко времени привязанных), ну и в базе соответственно ссылку на эту картинку.
 

nighthunter

Новичок
Автор оригинала: Мутник
делаешь имя картинке
PHP:
sha1(rand(1,1000000000)) . ".jpg";
и кидаешь все в одну папку images/ чтобы все лежало рядом и нигде не надо было думать, что к чему.... и
Думаю лучше будет
PHP:
md5(time())."jpg"
вероятность совпадения имен файлов почти нулевая если никто не будет играться с установкой времени на сервере
 

SiMM

Новичок
> md5(time())
Интересно, чем это лучше просто time ?
Вероятность совпадения такая же и равна вероятности закачки в течении одной секунды более чем одним пользователем.
 

4m@t!c

Александр
как я понял, вопрос не стоит по генерации уникального имени для картинки, автора интересует именно организация хранения картинок.
Как по мне, так лучше сделать папки, соответсвующие разделам сайта(новости/каталог/галерея...), а не кидать все в кучу. В папках, если есть возможность сделать подпапки (согласно рубрикатору каталога/алфавит....).
В базе хранить id раздела сайта, имя картинки, id статьи/новости. В имени задействовать id статьи, которой принадлежит картинка.
Получается, чо если нужно будет удалять или переносить часть модуля сайта - достаточно будет перенести соотвествующие папки. Если картинка используется в нескольких разделах - продублировать, на случай, если придется удалять информацию с участием этой картинки.
[offtop]А, вообще, все это субъективно, некоторым удобно гланды через задний проход лечить...[offtop]
 

nighthunter

Новичок
Автор оригинала: SiMM
> md5(time())
Интересно, чем это лучше просто time ?
Вероятность совпадения такая же и равна вероятности закачки в течении одной секунды более чем одним пользователем.
md5 - шоб никто не догадался про происхождения имени файла (на всякий пожарный :D ).
А вероятности закачки в течении одной секунды более чем одним пользователем ничтожно мала, хотя и существует. Как компромис предлагаю
PHP:
md5(time().rand(1,1000000000)).".jpg";
 

GeT

Новичок
У меня есть отдельное дерево с картинками (Nested Sets), соответственно для каждого узла существует физическая папка на сервере. Есть таблица с картинками, где хранится id (auto_increment)картинки, id папки, тип файла.
Имя картинки: $id.".".$type
Вероятность совпадения, насколько я понимаю, нулевая.
Не знаю, насколько такой способ хранения разумен, но меня пока устраивает, никаких глюков пока не наблюдал.
 
Сверху