@iliya936
Типичный Битриксойд

Как сохранить временно картинку в Laravel?

Есть задача, нужно сделать предпросмотр большой картинки (6000x3000) которую загружает пользователь через форму. Только предпросмотр будет на другой странице сайта. По этому картинку нужно как-то сохранить.
Есть ли в laravel способ сохранить картинку на определенное время? Чтобы директория сама потом чистилась с временными изображениями. Или же остается способ загружать картинку как обычно и по крону отчищать директорию?
  • Вопрос задан
  • 378 просмотров
Решения вопроса 1
JhaoDa
@JhaoDa
LaravelRUS Team
Есть ли в laravel способ сохранить картинку на определенное время? Чтобы директория сама потом чистилась с временными изображениями.

Кэш.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
Есть ли в laravel способ сохранить картинку на определенное время?
В самом Laravel'е - вряд ли (скорее всего - нет). По причине того, что это не очень типовая задача и к конкретному фреймворку (например, Laravel) она прямого отношения не имеет.

Или же остается способ загружать картинку как обычно и по крону отчищать директорию?
Я бы пользовался at, оно как мне видится чуть больше подходит для данной задачи.

Так же, в Redis'е есть возможность устанавливать срок жизни данных, а в Laravel есть поддержка Redis'а. Можно воспользоваться этой возможностью Redis'а, сохраняя данные там. Так же в Redis'е есть "события", которые в т.ч. могут оповестить о том, что срок жизни "таких-то" данных истёк и привязать соотв. удаление файла связанного с этими данными с диска.

*оба этих варианта, в теории могут дать сбой и данные могут не удалиться, по этой причине раз в N часов/дней я бы рекомендовал всё-таки сканировать директорию с файлами на поиск "неудалённого мусора".

В MySQL есть встроенный scheduler, файлы можно сохранять там и удалять по истечение срока их жизни (который можно указать при сохранении).

При необходимости можно "притащить тяжелую артилерию", поставить сервер очередей (или использовать уже имеющийся, если таковой есть, вот тут кое-что об этом писали), соотв. при загрузке картинки добавлять задачу на удаление оной как "отложенную".

P.S. "Что лучше" - зависит от каждого случая индивидуально, если ничего "лишнего" в проекте нет - можно использовать at + cron (для не частых проверок на наличие различного мусора, который по какой-то причине не был удалён, хотя, возможно это и не обязательно, глубоких тестов я не проводил...)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы