如何在PHP中除了fclose()和fopen()之外的一个http流文件?

时间:2011-02-13 19:28:45

标签: php http stream fopen fseek

PHP的fopen允许您fopen() http位置作为文件流 但是你不能fseek()rewind()他们,除了fclose()fopen()之外,有没有办法实现此目的?

3 个答案:

答案 0 :(得分:4)

其他人提到它:PHP不支持非本地流上的fseek()rewind()。我建议你下载/缓存文件并与之交互。例如

$cache = fopen('php://temp', 'r+');
stream_copy_to_stream($remoteResource, $cache);

现在你应该可以使用$cache之前使用$remoteResource做的任何事情,除了你现在能够在内部寻找(因此也可以倒回)。如果关闭临时流,PHP将自动清理所有使用的资源。

答案 1 :(得分:1)

对于初学者,您不应该使用f____函数来打开远程文件。这就是卷曲的目的。

我不相信有一种方法可以重置/回放远程套接字上的指针,所以除非PHP的文件函数缓冲并缓存流中的数据,否则我看不出它们如何允许你回放指针。

我可能错了,但是......我不是套接字专家。

答案 2 :(得分:0)

从PHP文档引用

  

注意:

     

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

与fseek()一样,如果fopen()使用“http://”或“ftp://”格式,则rewind()函数不能用于fopen()返回的文件指针。

相关问题