2017-04-12 88 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