関数の概要
gzgets は、PHPでgzip圧縮されたファイルから1行ずつ文字列を読み込むための関数です。通常の fgets と同様の使い方ができ、圧縮されたファイルの内容を簡単に逐次読み取りたい場合に便利です。
パラメータの説明
- resource $zp — gzipファイルポインタ。
gzopenでオープンしたgzファイルのリソースを指定します。 - int $length(省略可能) — 1行で読み取る最大バイト数。指定しない場合はデフォルトで4096バイトまで読み込みます。
戻り値
成功すると、gzファイルから読み込んだ1行の文字列を返します。ファイルの終端に到達すると false を返します。
使用例
基本的な使い方
<?php
$fp = gzopen('example.gz', 'r');
while (!gzeof($fp)) {
$line = gzgets($fp);
echo $line;
}
gzclose($fp);
?>
gzip圧縮されたファイルを開き、最後まで1行ずつ読み込んで表示する例です。gzeof でファイル末尾を確認しながらループしています。
読み込む文字数を制限する例
<?php
$fp = gzopen('example.gz', 'r');
$line = gzgets($fp, 20); // 1行最大20バイトまで読み込み
echo $line;
gzclose($fp);
?>
1行の読み込み長さを制限することで、大きな行がある場合のメモリ消費を抑えられます。
ファイルの一部のみ読み込む例
<?php
$fp = gzopen('example.gz', 'r');
for ($i = 0; $i < 3; $i++) {
if (($line = gzgets($fp)) !== false) {
echo "Line $i: " . $line;
}
}
gzclose($fp);
?>
最初の3行だけ読み込んで処理する例です。必要な行だけ読みたい場合に使えます。
関連する関数
gzopen— gzipファイルを開くgzclose— gzipファイルを閉じるgzread— 指定したバイト数を読み込むgzeof— ファイル末尾に達したか判定する
まとめ
gzgets はgzip圧縮されたファイルから1行ずつ読み込むのに便利な関数です。gzopen と組み合わせて使い、圧縮ファイル内のテキストデータを効率的に処理できます。読み込み長さを指定してメモリ制御ができるので、大きなファイルの読み込み時にも安心して使えます。
