2014-10-06 65 views
1

在PHP中,你可以打開一個壓縮資源無論是這樣的:流充氣包裝?

$fp = fopen('compress.zlib://http://httpbin.org/gzip','rb') 

$fp = gzopen('http://httpbin.org/gzip','rb') 

我如何打開一個泄了氣的資源? (如http://httpbin.org/deflate

N.B.我做不是想要將整個流讀入內存,以便我可以運行gzinflate就可以了。

回答

1

您可以使用stream_filter_append在讀取時應用充氣過濾器。

$fp = fopen('http://httpbin.org/deflate','rb'); 
$params = array('level' => 6, 'window' => 15, 'memory' => 9); 
stream_filter_append($fp, 'zlib.inflate', STREAM_FILTER_READ, $params); 
print fread($fp,8192); 
+0

看起來像這樣。儘管那些'$ params'對* read *有任何影響嗎? – mpen 2014-10-06 17:23:08

+1

@標記雖然沒有在文檔中提到(http://php.net/manual/en/filters.compression.php),但它看起來像'window'是讀取時唯一需要的參數 – FuzzyTree 2014-10-06 17:36:08

0

如提到的here,您可以使用gzopen的mode參數來精確的壓縮模式。

+0

我無法讓'gzopen'與'deflate'一起工作。你有一個例子嗎? – mpen 2014-10-06 17:19:35