思想:gzcompressとgzdeflateの違い(15)

1100 ワード

思想:gzcompressとgzdeflateの違い(15)
昨日ZIPパッケージのコードクリップを書きましたが、今日はテストに問題があります.core.phpパッケージで他のプログラムがあるときに解凍すると間違いがあります.この問題はまだ解決されていないが,圧縮についてはより多くの理解が得られている.昨日PHPZip類を模造して次のコードを書きました.
$zdata   = gzcompress($data);
$c_len   = strlen($zdata);
$zdata   = substr(substr($zdata, 0, strlen($zdata) - 4), 2); // fix crc bug

しかし、私はずっとその意味を理解していません.なぜ$zdataを処理するのか、後ろの注釈fix crc bugを見ても本当だと信じています.しかし今日PclZipのクラスを見て、コードは以下の通りです.
// ----- Compress the content
$v_content = @gzdeflate($v_content);

// ----- Set header parameters
$p_header['compressed_size'] = strlen($v_content);
$p_header['compression'] = 8;

ここにはfix crcバグはありません.見ましたhttp://cn.php.net/gzdeflateのコメントの後でやっとこの2つの関数の違いに対して一定の理解がありました.
一、gzcompressはgzdeflateの前より2バイト増えて4バイト増えただけです.圧縮の効率は同じです
二、gzcompressの前と後ろに圧縮情報があるので、解凍時に同時に処理することができます.したがって、デュアルコアCPUはgzuncompressを使用するとgzinflateよりも効率が2倍になります.
三、今書くのはZIPパッケージングプログラムで、http 1.1の圧縮伝送ではないので、上のコードを見てgzcompressを使っても、余分な情報を消さなければならないことを知っていて、この2つの違いを知ってから、私は思い切ってgzdeflateを選びました.もちろんその問題は探し続けなければならない.
2012.1.12