関数の概要
gzputs関数は、圧縮形式のファイル(.gzファイル)に文字列を書き込むためのPHP関数です。gzip形式で圧縮されたファイルに対して書き込みを行うため、通常のファイル書き込み関数とは異なり、圧縮データの形式を維持しつつ操作できます。大きなログファイルや大量データの圧縮保存などで利用されます。
パラメータの説明
- resource $zp – gzipファイルへの書き込み用に開かれた圧縮ファイルハンドル(gzopenで取得)
- string $string – 書き込みたい文字列データ
- int $length(省略可能) – 書き込む文字数。省略すると文字列全体を書き込みます
戻り値
成功した場合、gzputsは書き込んだバイト数を整数で返します。エラーが発生した場合はfalseを返します。
使用例
基本的な使い方
<?php
// gzipファイルを作成して書き込みモードで開く
$gz = gzopen('example.gz', 'w');
if ($gz) {
$bytes = gzputs($gz, "こんにちは、世界!n");
gzclose($gz);
echo $bytes . " バイトを書き込みました。";
} else {
echo "ファイルが開けませんでした。";
}
?>
この例では新しくexample.gzファイルを作成し、文字列を圧縮したまま書き込みます。書き込んだバイト数を返し、成功を確認しています。
ファイルの追記モードで書き込む
<?php
// 追記モードでファイルを開く
$gz = gzopen('example.gz', 'a');
if ($gz) {
gzputs($gz, "2行目のデータを追加n");
gzclose($gz);
echo "追記が完了しました。";
} else {
echo "ファイルが開けませんでした。";
}
?>
‘a’モードで開くと、既存の圧縮ファイルの末尾に追記できます。ログなどの追加書き込みに便利です。
一部の文字数だけ書き込む
<?php
$gz = gzopen('example.gz', 'w');
if ($gz) {
$text = "部分的に書き込みます";
// 最初の9バイトだけ書き込む
gzputs($gz, $text, 9);
gzclose($gz);
}
?>
第3引数に書き込みたいバイト数を指定すると、文字列の一部だけ書き込むことができます。
関連する関数
gzopen– gzipファイルを開くgzwrite– gzputsと同様に書き込むが、違いがあるため使い分けるgzclose– 圧縮ファイルを閉じるgzgets– gzファイルから1行ずつ読み込むgzread– gzファイルから指定バイト数読み込む
まとめ
gzputsはPHPでgzip圧縮されたファイルにテキストを書き込む際に便利な関数です。gzopenでファイルを開き、gzputsで圧縮データを書き込み、gzcloseでファイルを閉じるまでをセットで使います。ログの圧縮保存や大量データの管理で活躍します。書き込みバイト数の指定も可能で、用途に合わせて柔軟に対応できます。
