Хранение картинок
1649 сообщений
#14 лет назад
Цитата ("frig"):при запросе объявления проверяем есть ли картинки в поле или там местка что картинок нет. Если поле пустое, то генерируем его заново - проверяем через file_exists
Как раз запрос объявлений это самая частая операция. Так что лучше уже делать как я писал.
При добавлении новой картинки делаем так:
1. Из текста получаем массив
2. находим первое доступное число(если например есть 1,4-можно использовать 2. Если 1,2,3-получается 4 ) и задаем картинки как имя OBJECTID_найденное число.jpg
3. Добавляем элемент к массиву и снова записываем в поле
При удалении
1. Из текста получаем массив
2. Удаляем файл если есть. Удаляем элемент из массива если есть
3. Снова записываем в поле
Думаю так проще всего.
16382 сообщения
#14 лет назад
Цитата ("WebDesignStudio"):Как раз запрос объявлений это самая частая операция.
Иии?
При запросе если поле не пустое то мы просто берем информацию из поля. Поведение как у обычного кэша. Если в кэше есть элемент - возвращаем его. Если нет - пишем в кэш и возвращаем опять же из кэша.
1649 сообщений
#14 лет назад
Цитата ("frig"):Цитата ("WebDesignStudio"):Как раз запрос объявлений это самая частая операция.
Иии?
При запросе если поле не пустое то мы просто берем информацию из поля. Поведение как у обычного кэша. Если в кэше есть элемент - возвращаем его. Если нет - пишем в кэш и возвращаем опять же из кэша.
На странице будет 50 объявлений. У некоторых объявлений фото вообще не будет. Допустим что у всех 50 не будет. Делать 50 проверок и апдейтов? Мне кажется это не совсем правильно.
16382 сообщения
#14 лет назад
WebDesignStudio, кажется мне что ты не совсем понял в чем логика. Там проверка будет в любом случае - она будет определять что там в поле в этом - есть картинки или нет и если есть, то будет запускать exolode. Вот эта же проверка будет запускать их перегенерацию если это необходимо. И именно в том случае если необходимо.
1649 сообщений
#14 лет назад
frig, зачем? Добавление и удаление картинок к объявлениям будет очень редкая операция. В то время как запросы ОЧЕНЬ частые. Никаких проверок не буду делать при запросе. $list- получаем список объявлений
foreach($4list as $item){
$photos=explode($item);
if(count($photos)){
foreach($photos as $photo){
формируем картинку для вывода
}
}
}
1649 сообщений
#14 лет назад
Спасибо всем что помогли найти решение. 
буду использовать именно то что описал в последних постах. В данном случае это самый оптимальный вариант.
16382 сообщения
#14 лет назад
Цитата ("WebDesignStudio"):frig, зачем?
Источником информации о наличии картинок в одном случае выступает база данных, которая ничего не знает о реальном наличии картинок, а в другом случае - собственно наличие картинок на диске.
Цитата ("WebDesignStudio"):
Добавление и удаление картинок к объявлениям будет очень редкая операция.
Это не имеет значения.
Цитата ("WebDesignStudio"):
В то время как запросы ОЧЕНЬ частые.
Как и это тоже не имеет значения.
Цитата ("WebDesignStudio"):
Никаких проверок не буду делать при запросе.
Цитата ("WebDesignStudio"):
if(count($photos)){
А это значит не проверка, да?

1649 сообщений
#14 лет назад
frig это проверка если в БД что то есть, и надо вообще картинки показать или выдавать no_image. Проверить наличие на диске это лишняя операция. И операция апдейта каждый раз(когда, возможно, по какой то причине. то что в базе различается от того что на диске), тоже лишняя. Проверки будут при добавлении и удалении. Больше не нужно.
16382 сообщения
#14 лет назад
Цитата ("WebDesignStudio"):Проверить наличие на диске это лишняя операция.
И она не будет выполняться при каждом запросе!!
А операция вовсе не лишняя когда она нужна. А источник имеет значение. Вся нормализация борется с избыточность. И не зря.
1649 сообщений
#14 лет назад
Цитата ("mishustin_s"):Цитата ("WebDesignStudio"):A>2:45#B>67:3#C>56:2- двумерный ассоциативный массив.ну так числа можно только хранить. да и никакой он не ассоциативный.
array(
"A"=>array(2,45),
"B"=>array(67,3),
"C"=>array(56,2),
)
array(
"A"=>array('Это какой то текст',45),
"B"=>array('Это какой то текст',3),
"C"=>array('Это какой то текст',2),
)
Можно писать как
A>Это какой то текст:45#B>Это какой то текст:3#C>Это какой то текст:2
А это что?
Нужно просто правильно выбрать разделители, и не допускать их в самом тексте, и тогда все будет хорошо, и можно будет хранить что угодно.
Кстати у меня сайт жутко тормозит.
52 сообщения
#14 лет назад
Лучше уж использовать готовые решения, чем эти костыли, либо довести до ума чтобы хотябы было похоже на содержимое сессионых файлов.
1649 сообщений
#14 лет назад
Цитата ("mishustin_s"):Лучше уж использовать готовые решения, чем эти костыли, либо довести до ума чтобы хотябы было похоже на содержимое сессионых файлов.
А что именно в моем методе не так? У меня же буду просто цифры.
52 сообщения
#14 лет назад
То что он не универсальный и нельзя восстановить информацию о типе данных.
16382 сообщения
#14 лет назад
WebDesignStudio, если просто цифры, то explode должно хватить. Готовые решения позволяют в случае необходимости расширять функционал. Вот понадобится хранить картинки по подпапкам - будут уже не только картинки, а имена папок, разделители... В случае с тем же serialize проблем не будет точно, а в случае со своим - возможны варианты.