为什么我不能fseek()缓冲的,不可搜索的流?

时间:2019-10-23 12:27:43

标签: php stream

我想从流中读取一些字节(以检测是否存在BOM表),然后将其倒带。因为该流可能不可搜索,所以我认为我可以使用缓冲流。这是我尝试过的:

$fp = fsockopen('google.com', 80);
fwrite($fp, "GET / HTTP/1.0\r\n\r\n");

stream_set_read_buffer($fp, 256);
fread($fp, 3);
fseek($fp, 0);

这不起作用:

  

警告:fseek():流不支持搜索

这确实起作用:

stream_set_read_buffer($fp, 256);
fread($fp, 3);
fseek($fp, 4);

因此,看起来读缓冲区仅允许查找前瞻性,尽管据我理解,应以256个字节的块读取流,因此在读取1-256个字节后,我应该仍然可以搜索整个[0-255]范围。

为什么stream_set_read_buffer()不能使流在缓冲区范围内完全可搜索

0 个答案:

没有答案