@Alk90
php, mysql, jquery, css, html, api

Как лучше загружать изображения?

Всем привет! Вопрос касается как php, так и mysql.
По какой логике лучше загружать изображения в таком случае?
1. Пользователи могут загружать изображения в пост, до 20 штук. Изначально была такая система:
через ajax загружались картинки и сохранялись в папке temp, из нее же изображение и выводилось сразу же на страницу (перед сохранением поста).
2. При сохранении самого поста в массиве images[] отправлялись имена картинок, полученные в первом шаге через ajax. Каждая картинка искалась в папке temp а затем обрезалась в нужных разрешениях (6 штук) и сохранялась уже в рабочие директории и информация о ней сохранялась в БД с привязкой к только что созданному посту.

Проблема этого способа в том, что пользователь сначала ждет загрузки изображений, а затем долго ждет сохранения поста, ведь при загрузке 20 картинок, в сумме нужно создать 120 изображений.

Решил пойти другим путем:
1. При загрузке сразу обрезать изображения и ложить их в рабочие директории под нужными разрешениями, при этом появилась необходимость сразу же и сохранять информацию о изображении в БД не привязывая к какому либо посту (для того, чтобы кроном, периодически удалять те картинки, которые пользователи так и не сохранили вместе с постом).
2. При сохранении поста, также ищем имена изображений в БД и привязываем их к ID поста.

Но тут другая проблема при редактировании поста, когда нужно проверить удалил ли пользователь какое-то изображение или добавил новое или и удалил старое и добавил новое одновременно. Получается мне нужно выполнить действие:
Прилетели имена картинок в images[], все картинки редактируемого поста отвязываем от него, назначив им в поле post_id значение 0. И сразу же после этого назначаем всем картинкам из массива images[] значение ID редактируемого поста. Остальные же будут удалены по крону в 24:00 если они не привязаны ни к какому посту. Так вот, проблема в том, что между этими двумя действиями редко, но может сработать крон, и удалить нужные изображения вместе с ненужными.

Либо я вообще придумал не правильный алгоритм загрузки, подскажите плз как можно лучше это организовать...
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ответы на вопрос 2
  • @oxidmod
    Гуглите FileAPI.
    Вы можете отобразить картинки юзера не загружая их вообще.

    зы. обрезку и прочее лучше делать в фоне или лениво по запросу. в бд храните ссылку только на оригинал, с которого всегда можно перегенерить в нужные разрешения.
    Ответ написан
  • @Vasiliy_M
    Начал хорошо:
    1. При загрузке сразу обрезать изображения и ложить их в рабочие директории под нужными разрешениями, при этом появилась необходимость сразу же и сохранять информацию о изображении в БД не привязывая к какому либо посту (для того, чтобы кроном, периодически удалять те картинки, которые пользователи так и не сохранили вместе с постом).
    я точно также сделал у себя.

    Дальше треш и вообще не понятно.

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

    $sql = 'SELECT * FROM t 
                    WHERE post_id IS NULL
                    AND file_date < (NOW() - INTERVAL 60 MINUTE)
                    ORDER BY id ASC LIMIT ?i';
    Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы