您可以使用管道,并将过滤器添加到管道中。
这将允许您在流上使用stream_select,并且管道将充当zlib 的缓冲区。
从 select()ed 流中读取原始数据,将其写入管道,然后在另一端读取解码后的数据:)
list($in, $out) = stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, 0);
stream_filter_append($out, 'zlib.inflate', STREAM_FILTER_READ);
stream_set_blocking($out, 0);
while (stream_select(...)) {
// assuming that $stream is non blocking
stream_copy_to_stream($stream, $in);
$decoded_data = stream_get_contents($out);
}
Run Code Online (Sandbox Code Playgroud)
使用 php://memory 流也可以实现同样的效果。
| 归档时间: |
|
| 查看次数: |
591 次 |
| 最近记录: |