2014-01-07 92 views
0

我正在使用SabreDAV PHP庫連接到WebDAV服務器並下載一些文件,但它永久性下載1MB文件,我必須從該服務器下載高達1GB的文件。我查看了這個鏈接http://code.google.com/p/sabredav/wiki/WorkingWithLargeFiles,但它沒有幫助,因爲它告訴我,當我執行GET時,我將獲得一個流,但事實並非如此。如何處理SbreDav中的大文件?

這是我的代碼:

$settings = array(
    'baseUri' => 'file url', 
    'userName' => 'user', 
    'password' => 'pwd' 
); 

$client = new \Sabre\DAV\Client($settings); 
$response = $client->request('GET'); 

響應是與包含該文件的內容的「體」鍵的陣列。我究竟做錯了什麼?我只需要該文件只讀。我怎樣才能儘可能快地逐行讀取文件?

在此先感謝。

回答

0

如果下載1MB文件花費太長時間,那麼我認爲它不是SabreDAV問題,而是服務器或網絡或遠程服務器的問題。

你提到的google代碼鏈接只是列出了一種方法,如果你想傳輸非常大的文件,因爲你將不得不使用流和fopen他們提到的方式,但我認爲我能夠傳輸1GB文件,而無需使用這種方式,通常當我最後使用OwnCloud時。

如果您有VPS/Dedi服務器,請打開ssh並使用wget命令測試從WebDAV下載該遠程文件所需的速度和時間,如果其與SabreDAV相同,則其服務器/網絡問題,而不是SabreDAV,否則,它是Saber或您的代碼的問題。

對不起,但我沒有任何代碼張貼來幫助你,因爲問題本身並不清楚,可能有超過10件事情導致它。

PS:你需要增加執行時間,最大文件上傳和最大尺寸後PHP限制過於相對

+0

當我下載使用它沒有時間瀏覽器中的文件。我不認爲是一個連接問題,我的代碼與上面顯示的完全一樣。你知道如何以Google代碼提及的方式下載它嗎? – user3170035

+0

@ user3170035我的意思並不是你的瀏覽器,因爲這將使用你的網絡連接,而不是你運行上述代碼的服務器的網絡,因爲你需要直接使用wget/ssh在服務器上下載或訪問WebDAV文件通過PHP來測試下載速度。不幸的是,我在SabreDAV和流媒體方面經驗不足,我回答了這個問題,因爲它可能是服務器之間的網絡問題,而不僅僅是代碼。 – vongolashu