php方法只读取远程文件的一部分
我正在使用file_get_contents
获取远程文件并处理它们。 不幸的是,这些文件非常大,我只需要每个文件的一小段。 我完全知道我需要读取什么偏移量以及它的长度,但是阅读php手册,似乎只有在本地文件中才有可能使用file_get_contents
。
有没有下载整个文件的方法?
你需要使用fopen
, fseek
和fread
函数来代替file_get contents
这里是指向文档的链接
fopen
以字节流的形式打开文件,您可以使用fseek
查找您想要的位置,并根据需要使用fread
读取尽可能多的字节
据我所知,没有办法打开远程文件并将文件指针移动到某个点。 您需要某种为您提供该功能的远程服务。
虽然fopen和fseek似乎工作,但有一个cullpit。 形成手册:
并非所有的流都支持搜索。 对于那些不支持寻求的人,通过阅读和丢弃数据来实现从当前位置向前寻求; 其他形式的寻求将失败。
至于实施服务,有很多例子。 我喜欢rsync解决方案,它只反映从远程机器到本地机器的更改块。
如果您从http服务器读取文件,则可以设置Range
标头,前提是删除服务器支持该标头。