0

我正在使用 SabreDAV PHP 库连接到 WebDAV 服务器并下载一些文件,但下载 1MB 文件需要很长时间,而且我必须从该服务器下载多达 1GB 的文件。我查看了这个链接http://code.google.com/p/sabredav/wiki/WorkingWithLargeFiles但它没有帮助,因为它告诉我当我执行 GET 时我会得到一个流,但事实并非如此。

这是我的代码:

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

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

response 是一个带有“body”键的数组,其中包含文件的内容。我究竟做错了什么?我只需要只读文件。我怎样才能尽可能快地逐行阅读文件?

提前致谢。

4

1 回答 1

0

如果仅仅下载一个 1MB 的文件需要很长时间,那么我认为这不是 SabreDAV 的问题,而是您的服务器或网络的问题,或者可能是远程服务器的问题。

你提到的谷歌代码链接只是列出了一种方法,如果你想传输非常大的文件,因为你必须使用他们提到的流和 fopen 方式,但我认为我能够在不使用这种方式的情况下传输 1GB 文件,只是通常当我上次将它与 OwnCloud 一起使用时。

如果您有 VPS/Dedi 服务器,请打开 ssh 并使用 wget 命令测试从 WebDAV 下载该远程文件所需的速度和时间,如果它与 SabreDAV 相同,那么它是服务器/网络问题而不是SabreDAV,否则,它是 Sabre 或您的代码的问题。

抱歉,我没有任何代码可以发布来帮助您,因为问题本身并不清楚,并且可能有 10 多个原因导致它。

PS:您需要相对增加执行时间,最大文件上传和最大帖子大小的php限制

于 2014-01-07T17:27:46.150 回答