📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

 
1行目: 1行目:
== 概要 ==
== 概要 ==
PHPには、主に、Zlibライブラリを利用した圧縮機能が組み込まれている。<br>
最も一般的なものは、gzcompress関数、gzuncompress関数があり、ZLIBフォーマットでデータを圧縮・解凍できる。<br>
<br>
基本的な使用例を以下に示す。<br>
<syntaxhighlight lang="php">
$data = "圧縮したいテキストデータ";
$compressed = gzcompress($data);
$original = gzuncompress($compressed);
</syntaxhighlight>
<br>
代替的な圧縮方式であるGZIPフォーマットを使用する場合は、gzencode関数およびgzdecode関数が使用できる。<br>
これらは、HTTPでの転送に適している。<br>
<syntaxhighlight lang="php">
$compressed = gzencode($data);
$original = gzdecode($compressed);
</syntaxhighlight>
<br>
大きなファイルを扱う場合、PHPは圧縮ストリームをサポートしている。<br>
<syntaxhighlight lang="php">
// 圧縮ファイルの書き込み
$gz = gzopen('file.gz', 'w9');
gzwrite($gz, $data);
gzclose($gz);
// 圧縮ファイルの読み込み
$gz = gzopen('file.gz', 'r');
$content = gzread($gz, 4096);
gzclose($gz);
</syntaxhighlight>
<br>
複数のファイルを扱う場合は、ZIPアーカイブが便利である。<br>
PHPのZIPアーカイブ操作では、ZipArchiveクラスを使用する。<br>
<syntaxhighlight lang="php">
$zip = new ZipArchive();
if ($zip->open('archive.zip', ZipArchive::CREATE) === TRUE) {
    $zip->addFromString('test.txt', 'ファイルの内容');
    $zip->addFile('existing.txt', 'new_name.txt');
    $zip->close();
}
</syntaxhighlight>
<br>
圧縮レベルは、0 (無圧縮) から9 (最大圧縮) まで指定可能である。<br>
ただし、高い圧縮レベルはCPU負荷が高くなるため、状況に応じて適切なレベルを選択することが重要である。<br>
<br>
また、バイナリデータを扱う場合は、データの破損を防ぐため、base64エンコードとの組み合わせを推奨する。<br>
<syntaxhighlight lang="php">
$compressed = base64_encode(gzcompress($data));
$original = gzuncompress(base64_decode($compressed));
</syntaxhighlight>
<br>
これらの機能を組み合わせることにより、効率的なデータ圧縮と転送が実現できる。<br>
特に大容量データの取り扱いやバックアップ処理等で重宝する。<br>
<br><br>
<br><br>