📢 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> | ||