我使用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 :(得分:0)
首先我会尝试使用https。如果您正在连接的服务器碰巧支持它,那么您可以解决整个问题,因为丢失的字节通常是由网络上的路由器上的硬盘或不良MTU设置引起的。 http连接正常降级,为您提供尽可能多的文件管理,而https连接只是在丢失字节时失败,因为您无法解密非完整的数据包。 懒惰的IT人员往往会因为修复https的完全失败而受到刺激,但他们在诊断和修复角落情况方面的压力较小,例如缺少只通过http发生较大事务的字节。
如果https不可用,请继续阅读。
HTTP服务器响应可以包括Content-Length
标头,指示特定事务中的字节数。
如果标题存在,您应该可以通过直接运行wget来添加-v
标志来查看它。
如果不存在,我相信wget会报告Length: unspecified
后跟content-type
标题的值。
如果它告诉你(并假设字节数是准确的)那么你可以只比较你得到的文件的字节数和事务中的字节数。
如果您正在联系的服务器没有提供此标题,那么您将使用不太精确的方法,例如找到一些基本上播放mp3的播放器,直到它结束,然后查看它花了多长时间然后将其与ID3标签中列出的长度进行比较(该文件位于文件的最开头)。你不可能得到完全匹配,因为标签中的时间(如果它在那里)仅精确到秒,这意味着半秒可能会从文件的末尾消失,你不会'知道。