Лучший способ получить уведомление о завершении загрузки файла


Я создал транскодер видео с использованием ffmpeg. Пользователь загружает необработанные видео - очень большие, около 20 ГБ - по FTP.

В настоящее время php-скрипт отслеживает локальные пути каждые 5 секунд с помощью приведенной ниже стратегии.

  1. Найдите локальную файловую систему.
  2. Если появится "новый" файл, добавьте его в базу данных с измененным временем и размером.
  3. Через 5 секунд снова проверьте измененное время и размер,
    1. Не изменено: Установите статус [ГОТОВО] и закодируйте видео в "./вывод". каталог. ("вывод" явно исключен из мониторинга)
    2. Изменено: Подождите еще 5 секунд.

Он работает очень хорошо, но он сжигает некоторую мощность процессора, чтобы найти "новый файл". Есть ли какой-либо способ узнать "точное время" завершения загрузки файла?

Author: lqez, 2011-12-21

2 answers

Если вы можете, установите inotify, тогда это очень просто с помощью скрипта bash. в противном случае сценарий bash все еще может быть более эффективным.

Обновление: php поддерживает inotify с помощью: php.net/manual/en/book.inotify.php

 1
Author: , 2011-12-21 18:46:50

Попробуйте создать демон perl, который проверяет наличие новых файлов, я думаю, что это будет менее ресурсоемким. Кроме того, еще одна более похожая на unix альтернатива, и я думаю, что в целом она лучше: http://en.wikipedia.org/wiki/File_Alteration_Monitor

 1
Author: AlfredoVR, 2011-12-21 08:09:50