2017-04-12 3 views
0

J'utilise php wget pour télécharger des fichiers mp4 depuis un autre serveurvérifier si le fichier est entièrement téléchargé à l'aide wget

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

mais je ne trouve pas une option pour vérifier si le fichier téléchargé correctement, ou pas encore.

J'ai essayé d'obtenir le fichier de durée à l'aide getid3(), mais toujours retourner une bonne valeur, même si le fichier n'a pas été téléchargé correctement

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

il y a une fonction pour vérifier?

Merci

Répondre

0

Tout d'abord j'essaierais plutôt https. Si le (s) serveur (s) auquel vous vous connectez le supportent, vous contournez ce problème car les octets perdus sont généralement causés par du matériel floconneux ou de mauvais paramètres MTU sur un routeur de leur réseau. Les connexions http se dégradent avec élégance pour vous donner autant de fichiers que possible, tandis que les connexions https échouent tout simplement lorsqu'elles perdent des octets parce que vous ne pouvez pas déchiffrer des paquets non-intacts. Les informaticiens paresseux ont tendance à être poussés à corriger les échecs complets de https, mais ils subissent moins de pression pour diagnostiquer et corriger les cas d'angle comme les octets manquants qui ne se produisent que sur HTTP.

Si https n'est pas disponible, continuez à lire.

Une réponse de serveur HTTP peut inclure un en-tête Content-Length indiquant le nombre d'octets dans une transaction particulière. Si l'en-tête est là, vous devriez pouvoir le voir en exécutant wget directement, en ajoutant le drapeau -v. Si ce n'est pas là, je crois que wget rapportera Length: unspecified suivi de la valeur de l'en-tête content-type. S'il vous dit (et en supposant que le nombre d'octets est exact), vous pouvez simplement comparer le nombre d'octets du fichier que vous avez obtenu et celui de la transaction. Si le (s) serveur (s) que vous contactez ne fournissent pas cet en-tête, il vous reste des méthodes moins précises, comme trouver un lecteur qui jouera essentiellement le mp3 jusqu'à la fin et ensuite voir combien de temps il a fallu puis comparez-le à la longueur indiquée dans la balise ID3 (qui se trouve au tout début du fichier). Cependant, vous ne pourrez pas obtenir une correspondance exacte, car l'heure de la balise (si elle est présente) n'est exacte qu'à la seconde, ce qui signifie qu'une demi-seconde peut être perdue à la fin du fichier et que vous ne le feriez pas. t sais.

+0

Salut J'utilise wget http exec ("wget ​​-P files/$ http_url"); – Zeta

+0

merci pour une réponse détaillée @LinuxDisciple, et si j'utilise wget d'abord, et après 5min, je veux vérifier en utilisant la fonction php? il y a une possibilité? – Zeta