Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用wget检查文件是否已完全下载_Php_Wget_Getid3 - Fatal编程技术网

Php 使用wget检查文件是否已完全下载

Php 使用wget检查文件是否已完全下载,php,wget,getid3,Php,Wget,Getid3,我正在使用PHPWGET从另一台服务器下载mp4文件 exec("wget -P files/ $http_url"); 但我并没有找到任何选项来检查文件是否正确下载,或者还并没有下载 我尝试使用getID3()获取持续时间文件,但它始终返回良好的值,即使文件下载不正确 // Check file duration $file = $getID3->analyze($filepath); echo $file['playtime_string']; // 15:00 always goo

我正在使用PHPWGET从另一台服务器下载mp4文件

exec("wget -P files/ $http_url");
但我并没有找到任何选项来检查文件是否正确下载,或者还并没有下载

我尝试使用getID3()获取持续时间文件,但它始终返回良好的值,即使文件下载不正确

// Check file duration
$file = $getID3->analyze($filepath);
echo $file['playtime_string']; // 15:00 always good value
有什么功能可以检查吗


谢谢

首先,我想试试https。如果您连接的服务器恰好支持它,那么您就可以解决整个问题,因为丢失的字节通常是由网络上路由器上的薄弱硬件或错误MTU设置造成的。http连接优雅地降级为提供尽可能多的文件,而https连接在丢失字节时会失败,因为您无法解密不完整的数据包。 懒惰的IT人员往往被催促去修复https的完全故障,但他们在诊断和修复诸如丢失字节之类的死角情况方面的压力较小,这些情况只会在http上发生更大的事务

如果https不可用,请继续阅读

HTTP服务器响应可能包括一个
内容长度
头,指示特定事务中的字节数。 如果标题在那里,您应该可以通过直接运行wget,添加
-v
标志来查看它。 如果没有,我相信wget将报告
Length:unspecified
,后面是
内容类型
标题的值。 如果它告诉您(并且假设字节数是准确的),那么您可以将您得到的文件的字节数与事务中的字节数进行比较


如果您联系的服务器没有提供此标题,那么您只能使用不太精确的方法,例如找到一些基本上可以播放mp3直到结束的播放器,然后查看播放所用的时间,然后将其与ID3标记中列出的长度(在文件的最开始处)进行比较。但是,您无法获得精确的匹配,因为标记中的时间(如果有)只精确到秒,这意味着文件末尾可能只剩下半秒,您可能不知道。

您好,我使用的是wget http exec(“wget-p files/$http_url”);感谢@LinuxSubmission的详细回答,如果我先使用wget,5分钟后,我想使用php函数检查一下,会怎么样?有没有可能?