gzputs

関数の概要

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でファイルを閉じるまでをセットで使います。ログの圧縮保存や大量データの管理で活躍します。書き込みバイト数の指定も可能で、用途に合わせて柔軟に対応できます。