我正在使用file_get_contents
获取远程文件并进行处理。不幸的是,文件非常大,我只需要一个小段。我确切地知道我需要读取什么偏移量以及它的长度但是阅读php手册似乎只有file_get_contents
才能在本地文件上使用。
是否存在不下载整个文件的方法?
答案 0 :(得分:2)
您需要使用fopen
,fseek
和fread
函数代替file_get contents
这是
文档的链接 fopen
以字节流的形式打开文件,您可以使用fseek
搜索到您想要的位置,并使用fread
答案 1 :(得分:1)
据我所知,没有办法打开远程文件并将文件指针移动到某个点。您需要某种为您提供该功能的远程服务。
虽然fopen和fseek似乎有效,但有一个cullpit。形成manual:
并非所有流都支持寻求。对于那些不支持的人 寻求,从当前的位置向前寻求是由完成 阅读和丢弃数据;其他形式的寻求将失败。
至于实施服务,有很多例子。我喜欢rsync解决方案,它只将镜像从远程镜像镜像到本地机器。
答案 2 :(得分:0)
如果您从http服务器读取文件,则可以在删除服务器支持的情况下设置Range
标头。
答案 3 :(得分:0)
如果有人发现这是一个很好的方法来处理它是使用cURL和CURLOPT_WRITEFUNCTION
。