Нужен совет по хранению фотографий для сайта обьявлений

157
22 апреля 2018, 21:55

Есть небольшой проект - сайт с объявлениями, где есть объявление и фотографии к нему. Я расскажу как сделал обработку и хранение фотографий, а Вы подскажите как можно сделать лучше и правильно.

  1. Пользователь загружает через форму фотографии. (одну или несколько).
  2. Отправляем фотографии на сервер.
  3. if (is_uploaded_file - переименуем их и перенесем их во временную папку /temp (зачем спросите Вы, так как они и так во временной папке, отвечу, что пользователь может догружать фотографии, а фотографии хранятся во временной папке $_FILES['userfile']['tmp_name'] до момента закрытия скрипта)
  4. Помещая во временную папку, я сохраняю имя созданного файла в сессии (в под массиве $_SESSION['photo'])
  5. Там же и сразу же создаю превью загруженной фото и даю ей имя _prev.jpeg, и так же записываю имя этой превью в массив $_SESSION['photoprev']
  6. Далее когда пользователь заполнит все строки объявления и нажмет сохранить, в обработчике формы на сервере обрабатываются поля input, и записываются в базу, где получаем новый id объявления
  7. получив id объявления, записываем фотографии в таблицу photo из массива сессии, присваивая каждой фотографии id объявления (что бы потом достать их по id объявлению).
  8. Файлы c префиксом _prev не записываются в базу, а просто добавляются к имени нужной фотографии при выводе (когда в базе запрашивается список фото к объявлению). То есть в папке фотографий лежит и фото и превью фото (с префиксом _prev), но в базе записано только имя основного, большого фото.

Теперь почему сессия для хранения массива фото перед записью. Один из вариантов был создавать id объявления до сохранения и все загруженные файлы присваивать сразу нужному объявлению, но так как процент не завершённых (не оформленных) объявлений высок, я пошёл по пути экономии места на сервере и не хранить фотографии неоформленных объявлений.

По-этому фотографии пока сессия открыта, сохраняются во временной папке, а потом если оформлено объявление - переносится в основную папку, а имена фотографий сохраняются в базе и привязываются к объявлению. А если объявление не сохранено - то удаляются фотографии из временной папки. Как собственно несохраненное объявление.

  1. Подскажите, что думаете на счёт алгоритма обработки и какие есть мысли по улучшению?

  2. Как лучше работать с превьюшками. Вот сгенерировал её после загрузки. А дальше что с ней делать? Нужно ли их имена сохранять в базу? (например завести в таблице фото ключ который бы указывал что фотка с id 354, привязана к фотке id 125). Имеет ли в этом смысл? Или достаточно знать перфикс превью и просто генерировать имя превью на основе имя файла фото.

Заранее спасибо за любые мысли и советы. Очень нужно мне.

READ ALSO
Помогите php mysql

Помогите php mysql

Помогите пожалуйста, есть скрипт и всё такое, он выводит новости из ДБ, мне надо что бы была возможность, добавлять в таблицу лайк, типо имеется...

158
Замена символов в строке (PHP)

Замена символов в строке (PHP)

Есть строкаЕсть массив, в котором записанно все вот так: "a" => "****",

171
GET request in php

GET request in php

Когда я посылаю в ссылке что то вроде href="topicphp?language=c++", на страницу topic

179
html код внутри php функции ?> … <?php - так можно делать?

html код внутри php функции ?> … <?php - так можно делать?

Есть ли какая нибудь разница между следующим кодом Для примера возьму add_action хук из wordpress

158