【PHP8.x】gzpassthru関数の使い方

作成日: 更新日:

gzpassthru関数は、Gzip形式で圧縮されたファイルを読み込み、その内容を直接出力する関数です。この関数は、gzopen()関数によって開かれたGzipファイルポインタから、まだ読み込まれていない残りのすべての圧縮解除済みデータを読み出し、それを標準出力(ウェブアプリケーションの場合、通常はウェブブラウザ)へ直接出力します。

例えば、ウェブサーバー上でGzip圧縮されたログファイルや、あらかじめ圧縮しておいた大きなデータファイルを、ユーザーのブラウザにダウンロードとして提供する場合や、そのままブラウザ上に表示させる場合に非常に役立ちます。この関数を使用することで、ファイルを一旦すべてメモリに読み込んでから出力するのではなく、ファイルから少しずつ読み出してはすぐに出力するというストリーミング処理を行うため、特に巨大なファイルを扱う際にメモリの使用量を効率的に抑えることができます。

内部的には、gzread()関数でデータを読み込み、print()関数で出力するという操作を繰り返すのと同様の処理を実行します。正常に処理が完了した場合、出力された非圧縮データのバイト数を返します。何らかのエラーが発生した場合はfalseを返しますので、戻り値を確認してエラー処理を行うことが推奨されます。この関数は、PHPで効率的にGzip圧縮ファイルの内容を扱うための便利な機能の一つです。

基本的な使い方

構文(syntax)

<?php
$gzFile = gzopen('path/to/your/compressed/file.gz', 'r');
if ($gzFile) {
    gzpassthru($gzFile);
    gzclose($gzFile);
}
?>

引数(parameters)

resource $stream

  • resource $stream: 圧縮解除されたデータを書き出すストリームリソース

戻り値(return)

int|false

正常に実行されたバイト数を返します。エラーが発生した場合はfalseを返します。

【PHP8.x】gzpassthru関数の使い方 | いっしー@Webエンジニア