![]() |
Хранение изображений в БД
Вот не могу никак решить где лучше хранить фотографии .. в БД или в файлах ..
краткое описание ... Сайт с анкетами на куждую анкету по 8 фоток ... примерная посещяемость 5к в день .. как вы считаете где их лучше хранить? |
Файлами и только файлами. В БД достаточно хранить пути к файлам.
Работа с БД занимает 80% процессорной мощности от выделенной под сайт. Как минимум лишняя нагрузка на сервер. |
ну смотри на скоко я знаю запрос вида
SELECT `last_update` FROM `time` WHERE name = "update" работает не намного медленее file_get_contents('last_update.txt'); |
ну вообще то медленее, тк file_get_contents в случае с файлами вообще не нужен.
|
PHP код:
Код:
Код:
--0.00867295265198 0.0285441875458 хм =\ GreenBear ты прав просто хотел человеку показать что БД это не такой пожиратель ресурсов ка кнам его описывают .. файловая систему тоже грешит этим --- п.с по теме .. просто бд легче управлять всем этим .. удаление замена и т.д .. просто если так посмотреть при удалении замене в случае с БД может работать быстрее чем с файловой системой .. потому как там хватит одного апдейта .. а в файлах нужно использовать пару ф-ций .. |
Я бы посоветовал из базы брать адрес (или только название) к картинке и подставлять в <img src="">, а сами картинки хранить в отдельной папке.
Плюс не надо будет реализовывать кэширование. Цитата:
PS вот это вообще не понятно зачем надо: $re[] = file_get_contents('a.txt'); |
ChieFSS это было для вывода ..
а если замена и удаление? например мне надо чтоб фота название фоты было такое id_(номер с 1 до 8) получается типо 45654_5.jpg например .. а еси чел удаляет скажем фоту 45654_4.jpg и добовляет ещё фоту .. мне ж нужно её вставить на место 45654_4.jpg а теперь иди и считай какой по счёту фоты не хватает чтоб вставить место неё .. в этом случае в БД будет быстрее |
В ФАЙЛАХ!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
Чем больше база тем медленнее она работает, да и в БД никто не хранит файлы, я как минимум SQL inj смогу сделать просто загрузив файл
|
REBUUS ммм не думаю то это так очевидно как вы это пишете =)
например в булке есть возможность хранения изображений в БД и если не ошибуюсь эта возможность стоит по умолчанию и + для безопасности .. т.к нету папок с правами записи и о какой скуле идёт речь? когда внутрености файла экранируется а имя изменяется думаете в булке(vbulletin) маленькие БД ? |
Цитата:
Допустим такая структура: id, filename. В поле filename пишите через запятую (двоеточие, кавычки) названия фоток и всё. И пускай они называются хоть 000001, хоть 987654. Вариантов можно миллион придумать. |
а зачем тебе искать ? дальше иди, сделай хоть 45654_245.jpg
|
Цитата:
|
Цитата:
|
ChieFSSэто вредит безопасности ... там уязвимость с нулл байтом есть (была) хз какая там версия пхп в любом случае оставлять загружаемое название файла глупо ИМХО
|
KaMiKadZe Оо ... ты походу не понимаешь что такое экранирование .. это не фильрация ..
Gray_Wolf просмотр =) REBUUS такое вот условие .. не могу ничё с ээтим сделать |
Цитата:
|
Цитата:
\" Экранирование ' и " Похоже это что ты не понимаешь =) |
KaMiKadZe верно .. но при экранировании в БД пишется всё в не \' а '
так что возвращять ничё не надо .. и причём тут регулярка ? п.с кстате это не только ' " а всех спец символов =) |
Цитата:
Тогда уж извини, но хранить не стоит в базе такие вещи, если знаешь что такое java сервак lineage 2 на базе mysql, то поймешь :D |
Цитата:
|
Цитата:
Java серваки ла2 - это имхо пример как не надо делать не только в плане базы данных. |
я бы сделал так, файли я хранил в папке, в БД имена файлов id(пользователя)_дата добавления(что бы не считать какой есть а какой нету и одинаковых)
таблица выглядит так id | user_id | pic_name картинки вывожу по user_id удаляю по id c БД и по pic_name в паке с заменой нет проблем если надо ограничит, что бы для юзера не было больше 8 фоток, то просто считаешь cout(id) where user_id="..."<8 |
если хочешь делать два размера фоток(иногда бывает нужно), больший и маленькие, то просто делаешь другую папку и туда сохраняешь маленькие, а имена те же )))
|
спасибо всем .. буду делать БД + файл )
|
| Время: 22:00 |