不清楚如何使用它进行_增量_解压缩。
您将_压缩数据_ _分段_ 输入 inflate_add()。
zlib 上下文的内部状态将确保只要您一直读取到最后,您就可以在任何地方拆分并仍然获得正确的总数据。
通过这种方式,您不必在任何时候都将完整的解压缩数据保存在内存中(也不必将其作为文件用于 gzopen() 等),允许您解析比可用 PHP 内存限制大得多的文件。
<?php
$step = 500000;
$dataGz = load_gzip_compressed_data_to_string();
$start = 0;
$outLen = 0;
$ctxt = inflate_init(ZLIB_ENCODING_GZIP);
$status = inflate_get_status($inflCtxt);
while($status == ZLIB_OK) {
$split = substr($dataGz, $start, $step);
$dataFragment = inflate_add($inflCtxt, $split);
$outLen += strlen($dataFragment);
$status = inflate_get_status($inflCtxt);
$start += $step;
}
echo '输入: ' . strlen($dataGz) . ' 字节 / 输出: ' . $outLen . ' 字节.';
?>
注意:压缩率极高的档案仍然会因愚蠢且不必要的内存耗尽而崩溃,因为无法在 inflate_init() 中定义与 gzuncompress() 类似的限制。