Хранение изображений

vanicon

Новичок
Всем привет.
Нужно хранить загружаемые пользователями картинки, также позже будут разделение по альбомам...
Так вот есть вопрос по поводу хранения изображений на сервере, читал что нужно раскладывать файлы по папкам для более быстрого поиска...
Также вопрос по хранению аватарок, не хочется в бд хранить ссылку на аватарку пользователя, когда по идее ссылка на нее должна быть одна и та же, к примеру http://ava.site.com/id_user/_avatar.png, и изменяться будет как бы только эта картинка...
Но тогда придется стандартные аватарки грузить каждому пользователю в папку, что тоже не совсем правильно...
Как разделять фотки так:
/user_id/big/3fdfdfdf.jpg
/user_id/small/3fdfdfdf.jpg
Или как-то еще?
 

Dez

Новичок
Все загружаемые и обслуживаемые программно сайтом картинки должны храниться в отдельной таблице типа
id_file | file_path | status

А уже в профиле юзера или где нужно привязать картинку указывается id-шка.
 

fixxxer

К.О.
Партнер клуба
Да хоть бы substr( md5($id), 0, 2 ) . '/' . $id . '.jpg'.

substr(md5) для более-менее равновероятности, угу.

Только надо не забывать, что если файл уже существует, то замещать его атомарным move (в пределах одного раздела), а то в случе copy есть риск оставить юзера с битой аватаркой в случае чего (сервак ребутнулся, место кончилось итд)
 

vanicon

Новичок
fixxxer
С вероятностями понятно, для начала сойдет, но вот с аватарками не понятно, как их хранить что бы не пришлось прописывать путь к ней к каждому пользователю,
если делать как я писал раньше, то есть id_user/_avatar.png то для каждого пользователя придется создавать папку в которой от силы будет 3-4 аватарки разных размеров, читал что много каталогов с маленьким кол-во файлов в них не есть хорошо, а если делать все аватарки класть в одну папку: avatars/id_user.png, то скопиться большое кол-во файлов в 1 папки, так как же быть?
 

fixxxer

К.О.
Партнер клуба
чем не устраивает предложенный вариант?

ну если одного уровня мало -

substr( md5($id), 0, 2 ) . '/' . substr( md5($id), 2, 2 ) . '/' . $id . '.jpg'

etc
 

WMix

герр M:)ller
Партнер клуба
avatars/алгогитм предложеный fixxxer/id_user.png
 

vanicon

Новичок
fixxxer
Этот вариант устроит, но вот насчет 2 уровней что-то я не врубаюсь, получается что у нас будет 36 папок и в каждой папке будет еще по 36 папок а там уже и картинки, разве этот 2 уровень что-то меняет, все ровно фалы будут разделены по 36 папкам...
А все понял насчет аватарок, что то сразу не понял что по id пользователя и так найдем аватарку, вопрос по аватаркам снят...
 

vanicon

Новичок
Да тупанул там же 2 символа, а не 1, но тогда получается 36² = 1296 папок.
fixxxer Спасибо за алгоритм.
 

WMix

герр M:)ller
Партнер клуба
d131dd02c5e6eec4 693d9a0698aff95c 2fcab58712467eab 4004583eb8fb7f89
55ad340609f4b302 83e488832571415a 085125e8f7cdc99f d91dbdf280373c5b
d8823e3156348f5b ae6dacd436c919c6 dd53e2b487da03fd 02396306d248cda0
e99f33420f577ee8 ce54b67080a80d1e c69821bcb6a88393 96f9652b6ff72a70

d131dd02c5e6eec4 693d9a0698aff95c 2fcab50712467eab 4004583eb8fb7f89
55ad340609f4b302 83e4888325f1415a 085125e8f7cdc99f d91dbd7280373c5b
d8823e3156348f5b ae6dacd436c919c6 dd53e23487da03fd 02396306d248cda0
e99f33420f577ee8 ce54b67080280d1e c69821bcb6a88393 96f965ab6ff72a70
 

vanicon

Новичок
Значит 16 ясно, никогда не обращал на это особого внимания, спасибо буду знать...
 
Сверху