2017-04-12 108 views
0

我使用PHP wget来从另一台服务器检查,如果文件被使用wget

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

下载MP4文件,但我没有找到任何选项来检查文件是否正确下载,或尚未完全下载。

我尝试使用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头的价值。 如果它告诉你(并假设字节数是准确的),那么你可以比较你得到的文件和事务中的字节数。

如果你联系不提供这个头服务器(S),你留下了那么精确的方法,如发现有些播放器,基本上都会播放MP3直到它结束,然后看看它是如何花费的时间然后将其与ID3标签(位于文件的最开始部分)中列出的长度进行比较。尽管如此,你仍然无法获得完全匹配,因为标签中的时间(如果存在的话)只能精确到秒,这意味着从文件末尾可以消除半秒钟的时间,不知道。

+0

嗨,我是使用wget HTTP EXEC( “wget的-P文件/ $ HTTP_URL”); – Zeta

+0

感谢您的详细解答@LinuxDisciple,如果我先使用wget,然后5min后,我想检查使用php函数?有什么可能吗? – Zeta