Лучший способ получить уведомление о завершении загрузки файла
Я создал транскодер видео с использованием ffmpeg. Пользователь загружает необработанные видео - очень большие, около 20 ГБ - по FTP.
В настоящее время php-скрипт отслеживает локальные пути каждые 5 секунд с помощью приведенной ниже стратегии.
- Найдите локальную файловую систему.
- Если появится "новый" файл, добавьте его в базу данных с измененным временем и размером.
- Через 5 секунд снова проверьте измененное время и размер,
- Не изменено: Установите статус [ГОТОВО] и закодируйте видео в "./вывод". каталог. ("вывод" явно исключен из мониторинга)
- Изменено: Подождите еще 5 секунд.
Он работает очень хорошо, но он сжигает некоторую мощность процессора, чтобы найти "новый файл". Есть ли какой-либо способ узнать "точное время" завершения загрузки файла?
2 answers
Если вы можете, установите inotify, тогда это очень просто с помощью скрипта bash. в противном случае сценарий bash все еще может быть более эффективным.
Обновление: php поддерживает inotify с помощью: php.net/manual/en/book.inotify.php
Попробуйте создать демон perl, который проверяет наличие новых файлов, я думаю, что это будет менее ресурсоемким. Кроме того, еще одна более похожая на unix альтернатива, и я думаю, что в целом она лучше: http://en.wikipedia.org/wiki/File_Alteration_Monitor