gzwrite

関数の概要

PHPの gzwrite 関数は、gzip圧縮されたファイルリソースにデータを書き込むための関数です。通常のファイル書き込みと似ていますが、出力先がgzip形式の圧縮ファイルである点が異なります。圧縮ファイルを作成・編集したい場合に便利で、圧縮データの書き込みを効率よく行えます。

パラメータの説明

  • resource $zpgzopenなどで取得したgzipファイルリソースを指定します。
  • string $string: 書き込む文字列データを指定します。
  • int $length(省略可能): 書き込むバイト数を指定します。省略時は文字列全体が書き込まれます。

戻り値

書き込みに成功した場合、実際に書き込んだバイト数を整数で返します。失敗した場合は false を返します。

使用例

基本的な使い方

<?php
// gzipファイルを作成し書き込む
$file = 'example.gz';
$gz = gzopen($file, 'w');
if ($gz) {
    $bytes = gzwrite($gz, "Hello, gzip world!n");
    gzclose($gz);
    echo "書き込みバイト数: $bytes";
} else {
    echo "ファイルのオープンに失敗しました。";
}
?>

この例では、”example.gz” というgzip圧縮ファイルを新規作成し、文字列を圧縮書き込みしています。

部分的に指定した長さだけ書き込む

<?php
$gz = gzopen('partial.gz', 'w');
if ($gz) {
    $text = "部分的に書き込みます。";
    // 先頭から10バイト分だけ書き込む
    $bytes = gzwrite($gz, $text, 10);
    gzclose($gz);
    echo "書き込みバイト数: $bytes";
}
?>

文字列全体ではなく、先頭から10バイト分だけをgzファイルに書き込む例です。

既存のgzipファイルに追記する

<?php
// 追記モードでファイルを開く
$gz = gzopen('example.gz', 'a');
if ($gz) {
    gzwrite($gz, "追加のテキストです。n");
    gzclose($gz);
    echo "追記が完了しました。";
}
?>

モードを 'a' にして既存のgzファイルにデータを追記することも可能です。

関連する関数

  • gzopen — gzip圧縮ファイルを開く
  • gzclose — gzipファイルリソースを閉じる
  • gzread — gzipファイルからデータを読み込む
  • gzfile — gzipファイルを配列に読み込む

まとめ

gzwrite はPHPでgzip圧縮されたファイルに対して効率的にデータを書き込むための便利な関数です。圧縮ファイルの作成や編集を行う際に活用でき、ファイルを圧縮状態のまま書き込みたい場合に役立ちます。
基本的な使い方から部分的な書き込み、追記まで実務でもよく使われるため、覚えておくと便利です。