関数の概要
PHPの gzwrite 関数は、gzip圧縮されたファイルリソースにデータを書き込むための関数です。通常のファイル書き込みと似ていますが、出力先がgzip形式の圧縮ファイルである点が異なります。圧縮ファイルを作成・編集したい場合に便利で、圧縮データの書き込みを効率よく行えます。
パラメータの説明
resource $zp:gzopenなどで取得した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圧縮されたファイルに対して効率的にデータを書き込むための便利な関数です。圧縮ファイルの作成や編集を行う際に活用でき、ファイルを圧縮状態のまま書き込みたい場合に役立ちます。
基本的な使い方から部分的な書き込み、追記まで実務でもよく使われるため、覚えておくと便利です。
