|
|
|
(PHP) Как хранить изображение в MySQL?
|
|||
|---|---|---|---|
|
#18+
Вопрос такой - нужно реализовать добавление картинки в БД. То есть, админ заходит на свою панель, добавляет картинки с жесткого диска, потом их видно на странице в соотвествующем разделе. Вопрос в том, как храняться они в БД? Связка php+ MySQL. И как потом их выводить на экран? Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2006, 21:16:42 |
|
||
|
(PHP) Как хранить изображение в MySQL?
|
|||
|---|---|---|---|
|
#18+
Зачем хранить картинки в самой БД? Хочется раздутой базы? Хочется увеличить время загрузки страницы? Стоит сделать банальный аплоуд в папочку, а в БД записаться ссылку на залитый файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2006, 21:24:03 |
|
||
|
(PHP) Как хранить изображение в MySQL?
|
|||
|---|---|---|---|
|
#18+
Например, у тебя четыре сервера под nlb. И полста тысяч файлов, которые аплоадят сами юзера. И теперь тебе нужно, скажем, добавить в кластер еще пару серверов. Я бы и код хранил в базе, на самом-то деле. Все равно ты в базу лезешь за сессиями (да-да, если ты очень крутой царь ты поставишь affinity class C, но что если серваки у тебя существенно разные по мощности?). Очень хорошо сочетается со своим обработчиком 404-й. Нет файла - достаем его из базы и пишем на диск. До следующего обновления заюываем о проблеме синхронизации. Для этого при обновлении файлы должны получать разные имена, само-собой. Для картинок я это сделал (ситуацию см. выше) и работает прекрасно. Для кода я пока не могу сообразить (точнее, не думал пока плотно на эту тему) - как совместить постоянные URL и изменяющиеся имена файлов. Точнее, как это ЭЛЕГАНТНО совместить. Кому тема интересна - давайте обсудим здесь или в отдельном топике. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2006, 21:35:49 |
|
||
|
(PHP) Как хранить изображение в MySQL?
|
|||
|---|---|---|---|
|
#18+
Если очень хочется хранить картинки в БД, то: нужно использовать поля тип BLOB запихнуть файл в таблицу вывести картинку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2006, 21:39:35 |
|
||
|
(PHP) Как хранить изображение в MySQL?
|
|||
|---|---|---|---|
|
#18+
А ка кего сделать то аплоад этот? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2006, 11:11:46 |
|
||
|
(PHP) Как хранить изображение в MySQL?
|
|||
|---|---|---|---|
|
#18+
ap99apНапример, у тебя четыре сервера под nlb. И полста тысяч файлов, которые аплоадят сами юзера. И теперь тебе нужно, скажем, добавить в кластер еще пару серверов. Я бы и код хранил в базе, на самом-то деле. Все равно ты в базу лезешь за сессиями (да-да, если ты очень крутой царь ты поставишь affinity class C, но что если серваки у тебя существенно разные по мощности?). Очень хорошо сочетается со своим обработчиком 404-й. Нет файла - достаем его из базы и пишем на диск. До следующего обновления заюываем о проблеме синхронизации. Для этого при обновлении файлы должны получать разные имена, само-собой. Для картинок я это сделал (ситуацию см. выше) и работает прекрасно. Для кода я пока не могу сообразить (точнее, не думал пока плотно на эту тему) - как совместить постоянные URL и изменяющиеся имена файлов. Точнее, как это ЭЛЕГАНТНО совместить. Кому тема интересна - давайте обсудим здесь или в отдельном топике. Код: plaintext 1. Apache mod_rewrite думаю тебе поможет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2006, 11:30:00 |
|
||
|
(PHP) Как хранить изображение в MySQL?
|
|||
|---|---|---|---|
|
#18+
ZmiyА ка кего сделать то аплоад этот? Поиск ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2006, 21:22:38 |
|
||
|
(PHP) Как хранить изображение в MySQL?
|
|||
|---|---|---|---|
|
#18+
Каким, например, образом мне поможет mod_rewrite? (Оставим в стороне то, что у меня не апач :) Суть проблемы: нужно как-то отслеживать тот факт, что файл в базе обновился и его требуется вытащить на диск и закэшировать. В случае с картинками это довольно просто - редко кто ставит закладки не картинки :) В случае с кодом нужно оставить неизменным внешний URL. То есть нужно изменить само правило для рерайта - чтобы конкретному внешнему урлу сопоставллся другой файл. С другой стороны, разработчикам нужно неизменное имя файла (понятно почему?). Следовательно, нужна некая промежуточная таблица сопоставлений - слева имя файла, реализующего некий функционал, посередине промежуточное временное) имя файла, справа постоянный внешний URL. Вот как это сделать изящно и прозрачно для девелоперов - я пока не знаю. Но вот еще пару раз кому-нибудь объясню суть проблемы - и приду к решению :) Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2006, 07:55:36 |
|
||
|
(PHP) Как хранить изображение в MySQL?
|
|||
|---|---|---|---|
|
#18+
я имел ввиду что реврай должен редиректить на _ОДИН_ маленький неизменяемый скрипт который собственно будет отвечать за получения скриптов из базы их кеширование и исполнение. По крайней мере у меня так было когдато (только без мод_реврайта и пхп... а на мод_перле). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 00:12:47 |
|
||
|
(PHP) Как хранить изображение в MySQL?
|
|||
|---|---|---|---|
|
#18+
и еще помнится (боюсь ошибится) были в апаче предусмотрены handlerы. Т.е. при запросе скажем .html апач не ищет этот файл а вызывает указаный вами скрипт. (тут были приколы с версиями апача, директива virtual в некоторых версиях была обязательа в некоторых нет) вот тут вроде обсуждалось Да и вообще я не совсем понял ваших проблем с хранением кода в базе, ну допустим, у вас есть несколько функциональных блоков различной степени обновленности, их код хранится в базе с указанием версии. Ваш (например) index.php при открытии смотрит в базу находит нужный (последний) получает его и выполняет (да хоть бы через eval(); ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 12:21:51 |
|
||
|
(PHP) Как хранить изображение в MySQL?
|
|||
|---|---|---|---|
|
#18+
Смысл - в кэшировании файлов. То есть файл вытаскивается из базы не при каждом запросе, а только при первом обращении. Дальше он кладется на диск - именно туда, откуда должен браться впоследствии. Таким образом, не нужно лазить в базу и сравнивать версии файлов - если файла на диске нет, его просто нужно достать. Соответственно, в какой-то момент запросы должны идти уже к другому файлу (старый-то на диске лежит по-прежнему), чтобы сгенерировалась 404 и враппер понял что пора обновиться. Еще раз подчеркну - речь идет о ситуации с несколькими серверами под балансером. На одной машине овчинка может и не стоить выделки. Ну вот, еще на шаг ближе к решению :) Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 20:26:47 |
|
||
|
(PHP) Как хранить изображение в MySQL?
|
|||
|---|---|---|---|
|
#18+
ap99apСмысл - в кэшировании файлов. То есть файл вытаскивается из базы не при каждом запросе, а только при первом обращении.Это не объясняет, зачем вообще хранить файл в базе, а не сразу в файловой системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 14:57:37 |
|
||
|
(PHP) Как хранить изображение в MySQL?
|
|||
|---|---|---|---|
|
#18+
Если файловая система не распределенная - возникает проблема синхронизации файлов на нескольких серверах. Поэтому, в частности, свои десятки тысяч непредсказуемо обновляемых картинок мы держим в базе. Ну и кроме того есть такая мысль, что бэкапить только и исключительно базу данных - удобнее. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 23:18:10 |
|
||
|
|

start [/forum/topic.php?fid=23&fpage=430&tid=1476507]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
22ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 307ms |

| 0 / 0 |
