Вероятно, я бы так и сделал:
- имеет веб-страницу PHP, которая добавляет запись в базу данных, чтобы указать, «этот файл должен быть обработан» - эта страница является той, которая получает загруженный файл
- и отображает сообщение пользователю; что-то вроде "ваш файл будет обработан в ближайшее время"
- В CLI (поскольку у вас есть выделенный сервер, вы можете использовать командную строку, устанавливать программы, ...) , иметь пакет, который обрабатывает новые вставленные файлы
- сначала пометьте запись как "обрабатывающую"
- делать вещи преобразования; ffmpeg , вероятно, будет правильным инструментом для этого - я видел довольно много сообщений об этом на SO, поэтому вы можете найти некоторую информацию об этой части: -)
- пометить файл как "обработанный"
- И на какой-либо (другой?) Веб-странице вы можете показать пользователю, в каком состоянии находится его файл:
- , если он еще не обработан
- если обрабатывается
- или, если он был обработан - вы можете дать ему ссылку на новый видеофайл - или делать с ним все, что вы хотите / нужно.
Вот пара других заметок:
- В день, когда ваше приложение станет больше, вы можете иметь:
- один «веб-сервер»
- много "серверов обработки"; в вашем приложении это ffmpeg, который потребует много ресурсов процессора, а не обслуживает веб-страницы; так что возможность масштабировать эту часть - это неплохо (это еще одна причина для «блокировки» файлов, указывая их как «обработка» в БД: таким образом, у вас не будет нескольких серверов обработки, пытающихся обрабатывать один и тот же файл)
- Вы используете PHP только с веб-сервера для генерации веб-страниц, что является задачей веб-сервера.
- Тяжелая / длинная обработка - это не работа веб-сервера!
- В тот день, когда вы захотите переключиться на что-то еще, кроме PHP, для части "обработки", это будет проще.
Ваш «сценарий обработки» должен запускаться каждые несколько минут; для этого вы можете использовать cron , если вы работаете на Linux-подобной машине.
Конечно, вы также можете вызвать ffmpeg прямо со страницы PHP, на которую загружается файл ... Но, учитывая, что это может потребовать довольно много времени процессора, это не всегда может быть подходящим решением ...
... Даже если это немного проще и позволит пользователям быстрее получать конвертированное видео (им не придется ждать, пока не будет выполнено задание cron)
(отказ от ответственности: этот ответ взят из другого ответа, который я сделал там )