7

我正在file_get_contents获取远程文件并处理它们。不幸的是,这些文件非常大,我只需要每个文件的一小部分。我确切地知道我需要阅读的偏移量及其长度,但阅读 php 手册似乎file_get_contents只有在本地文件上才有可能。

有没有不下载整个文件的方法?

4

4 回答 4

2

您需要使用fopen,fseekfreadfunction 而不是file_get contents

这里是文档的链接

fopen将文件作为字节流打开,您可以使用fseek并根据需要读取所需的位置fread

于 2012-10-04T12:53:11.843 回答
1

据我所知,没有办法打开远程文件并将文件指针移动到某个点。您需要某种为您提供该功能的远程服务。

虽然 fopen 和 fseek 似乎工作,但有一个罪魁祸首。形成手册

并非所有流都支持搜索。对于不支持查找的,从当前位置向前查找是通过读取和丢弃数据来完成的;其他形式的寻求将失败。

至于实现一个服务,有很多例子。我喜欢 rsync 解决方案,它只将更改的块从远程机器镜像到本地机器。

于 2012-10-04T12:56:25.250 回答
0

如果您从 http 服务器读取文件,则可以Range在删除服务器支持的情况下设置标头。

于 2012-10-04T13:19:49.227 回答
0

如果有人偶然发现这是处理它的好方法,那就是使用 cURL 和CURLOPT_WRITEFUNCTION.

于 2012-10-05T10:22:51.990 回答