powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Как хранить изображение в MySQL?
13 сообщений из 13, страница 1 из 1
(PHP) Как хранить изображение в MySQL?
    #33610610
Zmiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос такой - нужно реализовать добавление картинки в БД. То есть, админ заходит на свою панель, добавляет картинки с жесткого диска, потом их видно на странице в соотвествующем разделе. Вопрос в том, как храняться они в БД? Связка php+ MySQL. И как потом их выводить на экран?
Заранее благодарен.
...
Рейтинг: 0 / 0
(PHP) Как хранить изображение в MySQL?
    #33610615
Фотография Robert Tappan Moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем хранить картинки в самой БД? Хочется раздутой базы? Хочется увеличить время загрузки страницы?
Стоит сделать банальный аплоуд в папочку, а в БД записаться ссылку на залитый файл.
...
Рейтинг: 0 / 0
(PHP) Как хранить изображение в MySQL?
    #33610625
ap99ap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например, у тебя четыре сервера под nlb. И полста тысяч файлов, которые аплоадят сами юзера. И теперь тебе нужно, скажем, добавить в кластер еще пару серверов.

Я бы и код хранил в базе, на самом-то деле. Все равно ты в базу лезешь за сессиями (да-да, если ты очень крутой царь ты поставишь affinity class C, но что если серваки у тебя существенно разные по мощности?).

Очень хорошо сочетается со своим обработчиком 404-й. Нет файла - достаем его из базы и пишем на диск. До следующего обновления заюываем о проблеме синхронизации.

Для этого при обновлении файлы должны получать разные имена, само-собой. Для картинок я это сделал (ситуацию см. выше) и работает прекрасно. Для кода я пока не могу сообразить (точнее, не думал пока плотно на эту тему) - как совместить постоянные URL и изменяющиеся имена файлов. Точнее, как это ЭЛЕГАНТНО совместить.

Кому тема интересна - давайте обсудим здесь или в отдельном топике.


Код: plaintext
1.
WBR,
    A.P.
...
Рейтинг: 0 / 0
(PHP) Как хранить изображение в MySQL?
    #33610627
Фотография Robert Tappan Moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если очень хочется хранить картинки в БД, то:
нужно использовать поля тип BLOB

запихнуть файл в таблицу

вывести картинку
...
Рейтинг: 0 / 0
(PHP) Как хранить изображение в MySQL?
    #33611276
Zmiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ка кего сделать то аплоад этот?
...
Рейтинг: 0 / 0
(PHP) Как хранить изображение в MySQL?
    #33611347
Anjey aka PM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ap99apНапример, у тебя четыре сервера под nlb. И полста тысяч файлов, которые аплоадят сами юзера. И теперь тебе нужно, скажем, добавить в кластер еще пару серверов.

Я бы и код хранил в базе, на самом-то деле. Все равно ты в базу лезешь за сессиями (да-да, если ты очень крутой царь ты поставишь affinity class C, но что если серваки у тебя существенно разные по мощности?).

Очень хорошо сочетается со своим обработчиком 404-й. Нет файла - достаем его из базы и пишем на диск. До следующего обновления заюываем о проблеме синхронизации.

Для этого при обновлении файлы должны получать разные имена, само-собой. Для картинок я это сделал (ситуацию см. выше) и работает прекрасно. Для кода я пока не могу сообразить (точнее, не думал пока плотно на эту тему) - как совместить постоянные URL и изменяющиеся имена файлов. Точнее, как это ЭЛЕГАНТНО совместить.

Кому тема интересна - давайте обсудим здесь или в отдельном топике.


Код: plaintext
1.
WBR,
    A.P.


Apache mod_rewrite думаю тебе поможет :)
...
Рейтинг: 0 / 0
(PHP) Как хранить изображение в MySQL?
    #33613114
Фотография Robert Tappan Moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZmiyА ка кего сделать то аплоад этот?
Поиск
...
Рейтинг: 0 / 0
(PHP) Как хранить изображение в MySQL?
    #33613383
ap99ap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каким, например, образом мне поможет mod_rewrite?

(Оставим в стороне то, что у меня не апач :)

Суть проблемы: нужно как-то отслеживать тот факт, что файл в базе обновился и его требуется вытащить на диск и закэшировать. В случае с картинками это довольно просто - редко кто ставит закладки не картинки :)

В случае с кодом нужно оставить неизменным внешний URL. То есть нужно изменить само правило для рерайта - чтобы конкретному внешнему урлу сопоставллся другой файл.

С другой стороны, разработчикам нужно неизменное имя файла (понятно почему?).

Следовательно, нужна некая промежуточная таблица сопоставлений - слева имя файла, реализующего некий функционал, посередине промежуточное временное) имя файла, справа постоянный внешний URL.

Вот как это сделать изящно и прозрачно для девелоперов - я пока не знаю.

Но вот еще пару раз кому-нибудь объясню суть проблемы - и приду к решению :)


Код: plaintext
1.
WBR,
    A.P.
...
Рейтинг: 0 / 0
(PHP) Как хранить изображение в MySQL?
    #33615798
Anjey aka PM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я имел ввиду что реврай должен редиректить на _ОДИН_ маленький неизменяемый скрипт который собственно будет отвечать за получения скриптов из базы их кеширование и исполнение.

По крайней мере у меня так было когдато (только без мод_реврайта и пхп... а на мод_перле).
...
Рейтинг: 0 / 0
(PHP) Как хранить изображение в MySQL?
    #33616818
1024byte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и еще помнится (боюсь ошибится) были в апаче предусмотрены handlerы.
Т.е. при запросе скажем .html апач не ищет этот файл а вызывает указаный вами скрипт. (тут были приколы с версиями апача, директива virtual в некоторых версиях была обязательа в некоторых нет)

вот
тут вроде обсуждалось

Да и вообще я не совсем понял ваших проблем с хранением кода в базе, ну допустим, у вас есть несколько функциональных блоков различной степени обновленности, их код хранится в базе с указанием версии. Ваш (например) index.php при открытии смотрит в базу находит нужный (последний) получает его и выполняет (да хоть бы через eval(); )
...
Рейтинг: 0 / 0
(PHP) Как хранить изображение в MySQL?
    #33618544
ap99ap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смысл - в кэшировании файлов.

То есть файл вытаскивается из базы не при каждом запросе, а только при первом обращении. Дальше он кладется на диск - именно туда, откуда должен браться впоследствии.

Таким образом, не нужно лазить в базу и сравнивать версии файлов - если файла на диске нет, его просто нужно достать.

Соответственно, в какой-то момент запросы должны идти уже к другому файлу (старый-то на диске лежит по-прежнему), чтобы сгенерировалась 404 и враппер понял что пора обновиться.

Еще раз подчеркну - речь идет о ситуации с несколькими серверами под балансером. На одной машине овчинка может и не стоить выделки.

Ну вот, еще на шаг ближе к решению :)


Код: plaintext
1.
WBR,
    A.P.
...
Рейтинг: 0 / 0
(PHP) Как хранить изображение в MySQL?
    #33620523
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
ap99apСмысл - в кэшировании файлов.

То есть файл вытаскивается из базы не при каждом запросе, а только при первом обращении.Это не объясняет, зачем вообще хранить файл в базе, а не сразу в файловой системе.
...
Рейтинг: 0 / 0
(PHP) Как хранить изображение в MySQL?
    #33621959
ap99ap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если файловая система не распределенная - возникает проблема синхронизации файлов на нескольких серверах. Поэтому, в частности, свои десятки тысяч непредсказуемо обновляемых картинок мы держим в базе.

Ну и кроме того есть такая мысль, что бэкапить только и исключительно базу данных - удобнее.


Код: plaintext
1.
WBR,
    A.P.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Как хранить изображение в MySQL?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]