我想从流中读取一些字节(以检测是否存在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()
不能使流在缓冲区范围内完全可搜索?