PHP 的 fopen 允许您将fopen()
http 位置作为文件流。
但是你不能fseek()
或者rewind()
他们,有没有办法做到这一点fclose()
,而fopen()
不是一次又一次?
问问题
3611 次
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 回答