Php 使用wget检查文件是否已完全下载
我正在使用PHPWGET从另一台服务器下载mp4文件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
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函数检查一下,会怎么样?有没有可能?