php方法只读取部分远程文件

时间:2012-10-04 12:51:08

标签: php file-get-contents

我正在使用file_get_contents获取远程文件并进行处理。不幸的是,文件非常大,我只需要一个小段。我确切地知道我需要读取什么偏移量以及它的长度但是阅读php手册似乎只有file_get_contents才能在本地文件上使用。

是否存在不下载整个文件的方法?

4 个答案:

答案 0 :(得分:2)

您需要使用fopenfseekfread函数代替file_get contents

这是

文档的链接

fopen以字节流的形式打开文件,您可以使用fseek搜索到您想要的位置,并使用fread

读取所需的字节数

答案 1 :(得分:1)

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

虽然fopen和fseek似乎有效,但有一个cullpit。形成manual

  

并非所有流都支持寻求。对于那些不支持的人   寻求,从当前的位置向前寻求是由完成   阅读和丢弃数据;其他形式的寻求将失败。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

如果有人发现这是一个很好的方法来处理它是使用cURL和CURLOPT_WRITEFUNCTION