2

PHP 的 fopen 允许您将fopen()http 位置作为文件流。
但是你不能fseek()或者rewind()他们,有没有办法做到这一点fclose(),而fopen()不是一次又一次?

4

3 回答 3

6

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

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

现在你应该能够处理$cache你以前做过的任何事情$remoteResource,除了你现在能够在里面寻找(因此也可以倒带)它。如果关闭 temp-stream,PHP 将自动清理所有使用过的资源。

于 2011-06-29T09:17:38.497 回答
1

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

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

不过,我可能是错的……我不是套接字专家。

于 2011-02-13T19:38:02.503 回答
0

引用 PHP 文档

笔记:

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

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

于 2011-02-13T19:41:33.473 回答