代码之家  ›  专栏  ›  技术社区  ›  BenMorel Manish Pradhan

为什么我不能fseek()一个缓冲的、不可查找的流?

  •  0
  • BenMorel Manish Pradhan  · 技术社区  · 5 年前

    我想从流中读取几个字节(以检测是否存在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 回复  |  直到 5 年前