使用stream_filter_append和stream_copy_to_stream解压缩gzip

Sve*_*ntz 2 php zlib stream

发现这个:https: //stackoverflow.com/a/11373078/530599 - 很棒,但是

怎么样 stream_filter_append($fp, 'zlib.inflate', STREAM_FILTER_*

寻找另一种解压缩数据的方法.

$fp = fopen($src, 'rb');
$to = fopen($output, 'wb');

// some filtering here?
stream_copy_to_stream($fp, $to);
fclose($fp);
fclose($to);
Run Code Online (Sandbox Code Playgroud)

$src一些网址在哪里http://.../file.gz例如200+ Mb :)

添加了有效的测试代码,但分为两步:

<?php

    $src = 'http://is.auto.ru/catalog/catalog.xml.gz';
    $fp = fopen($src, 'rb');
    $to = fopen(dirname(__FILE__) . '/output.txt.gz', 'wb');
    stream_copy_to_stream($fp, $to);
    fclose($fp);
    fclose($to);

    copy('compress.zlib://' . dirname(__FILE__) . '/output.txt.gz', dirname(__FILE__) . '/output.txt');
Run Code Online (Sandbox Code Playgroud)

dre*_*010 5

尝试gzopen打开gzip(.gz)文件进行读写.如果文件不是压缩文件,它会透明地读取它,以便您可以安全地读取非gzip文件.

$fp = gzopen($src, 'rb');
$to = fopen($output, 'w+b');
while (!feof($fp)) {
    fwrite($to, gzread($fp, 2048)); // writes decompressed data from $fp to $to
}

fclose($fp);
fclose($to);
Run Code Online (Sandbox Code Playgroud)