関数の概要
gzread は、PHPでgzip形式の圧縮ファイル(.gzファイル)を読み込むための関数です。gzファイルを解凍しながら指定したバイト数分のデータを読み取ることができます。圧縮されたファイルからデータを直接読み取る際に便利で、ファイルを解凍して展開する手間を省けるため、効率よく処理が行えます。
パラメータの説明
resource $zp: gzipファイルを読み込むためにgzopen()関数で開いたファイルポインタリソースを指定します。int $length: 読み込みたいバイト数を指定します。指定したバイト数分までデータを読み込みます。
戻り値
読み込んだデータの文字列を返します。ファイルの終わりに到達した場合は空文字列(””)を返します。失敗した場合は FALSE を返します。
使用例
基本的な使い方
$zp = gzopen("example.gz", "rb");
if ($zp) {
$data = gzread($zp, 100);
gzclose($zp);
echo $data;
} else {
echo "ファイルを開けませんでした。";
}
gzip圧縮された「example.gz」ファイルを開き、最初の100バイト分を読み込んで表示しています。ファイルを開いた後は必ず gzclose() でリソースを解放します。
ファイル全文を読み込む方法
$zp = gzopen("example.gz", "rb");
$contents = "";
if ($zp) {
while (!gzeof($zp)) {
$contents .= gzread($zp, 4096);
}
gzclose($zp);
echo $contents;
} else {
echo "ファイルを開けませんでした。";
}
gzread をループで繰り返し使うことで、gzip圧縮ファイル全体を解凍しながら一気に読み込むことが可能です。読み込み単位は4096バイト(4KB)に設定しています。
gzipファイルの内容を行単位で読み取り処理する例
$zp = gzopen("example.gz", "rb");
if ($zp) {
while (!gzeof($zp)) {
$line = gzread($zp, 1024);
echo $line . "<br>";
}
gzclose($zp);
} else {
echo "ファイルを開けませんでした。";
}
1,024バイトずつデータを読み込みながら画面に出力しています。gzreadは行単位の読み込みではないため、行として扱いたい場合は別途改行処理を行う必要がありますが、データのチャンク単位での処理に適しています。
関連する関数
gzopen(): gzipファイルを開く関数gzclose(): gzipファイルを閉じる関数gzeof(): gzipファイルの終端をチェックする関数gzgets(): gzipファイルから1行単位で読み込む関数gzwrite(): gzipファイルに書き込む関数
まとめ
gzread はgzip形式の圧縮ファイルを解凍しながら指定したバイト数分のデータを読み出す便利な関数です。gzopenでファイルを開き、gzreadで読み込み、最後にgzcloseでファイルを閉じる基本的な使い方を覚えておけば、gzファイルの内容を扱う際に役立ちます。複数回に分けて読むことで大きなファイルも安全に処理できるため、実務でのログ解析やデータ処理などに活用できます。
