В моем приложении пользователи будут загружать файлы (маленькие и большие). Я хотел бы сохранить файл в S3 или FTP или любой другой службе хранения.
Мой план состоит в том, чтобы загрузить файлы с клиента с помощью AJAX (с индикатором выполнения) на мой сервер PHP, а затем перенести их в фоновом режиме в целевое хранилище. И я хочу сделать последнюю часть асинхронно (в фоновом режиме). Мне также нужно выполнить некоторые задачи (например, обновление и очистка базы данных) после загрузки файлов с моего сервера в хранилище.
Мой предыдущий подход был использовать поЬир (что-то вроде: Как я могу использовать nohup для запуска процесса в качестве фонового процесса в Linux?) но у него есть некоторые недостатки, и я предпочитаю не использовать его.
Я использую Laravel, поэтому я думаю об очередях с beanstalkd. Я знаю, что очереди хороши для отправки электронных писем, обработки изображений и тому подобного, но я никогда не использовал их раньше, поэтому я не знаю, подходит ли это для загрузки фоновых файлов. Это хороший подход? Или, может быть, есть лучшие способы сделать это?
Вы можете попробовать Диспетчер. Посмотрите здесь:
https://github.com/Indatus/dispatcher
С веб-сайта: «Dispatcher — это инструмент планирования команд ремесленников Laravel, используемый для планирования команд ремесленников в вашем проекте, поэтому вам не нужно прикасаться к вашему crontab при развертывании».
Других решений пока нет …