проверьте, полностью ли загружен файл с помощью wget

Я использую php wget для загрузки файлов mp4 с другого сервера

exec("wget -P files/ $http_url");

но я не нашел никакой возможности проверить, правильно ли загружен файл или нет.

Я пытался получить файл продолжительности, используя getID3 (), но он всегда возвращает хорошее значение, даже если файл загружен неправильно

// Check file duration
$file = $getID3->analyze($filepath);
echo $file['playtime_string']; // 15:00 always good value

есть какая-нибудь функция, чтобы это проверить?

Спасибо

0

Решение

Прежде всего, я бы попробовал https вместо этого. Если сервер (-ы), к которому вы подключаетесь, поддерживают его, вы решаете всю эту проблему, потому что потерянные байты обычно вызваны нестабильным оборудованием или неправильными настройками MTU на маршрутизаторе в их сети. Соединения http изящно уменьшаются, давая вам столько файлов, сколько он может обработать, в то время как соединения https просто терпят неудачу, когда теряют байты, потому что вы не можете расшифровать неинтактные пакеты.
Ленивые ИТ-специалисты, как правило, склонны к исправлению полных сбоев https, но им меньше нужно диагностировать и исправлять критические случаи, такие как пропущенные байты, которые только вызывают большие транзакции через http.

Если https недоступен, продолжайте читать.

Ответ HTTP-сервера может включать Content-Length заголовок, указывающий количество байтов в конкретной транзакции.
Если заголовок есть, вы сможете увидеть его, запустив wget напрямую, добавив -v флаг.
Если его там нет, я верю, что wget сообщит Length: unspecified с последующим content-type значение заголовка.
Если он говорит вам (и предполагая, что количество байтов является точным), то вы можете просто сравнить количество байтов файла, который вы получили, и числа в транзакции.

Если сервер (ы), с которыми вы связываетесь, не предоставляют этот заголовок, у вас остаются менее точные методы, такие как поиск проигрывателя, который будет воспроизводить mp3 в основном до конца, а затем посмотреть, сколько времени это заняло, и затем сравнить на длину, указанную в теге ID3 (которая находится в самом начале файла). Вы не сможете получить точное совпадение, потому что время в теге (если оно есть) точно с точностью до секунды, что означает, что с конца файла может пройти полсекунды, и вы не сможете я знаю

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]