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

作成日: 更新日:

fpassthru関数は、開かれたファイルポインタから、残りのデータをすべて出力バッファへ直接出力する関数です。この関数は、fopen()などで作成されたファイルリソース(ファイルポインタ)を引数として受け取ります。ファイルポインタが指す現在の位置からファイルの終端(EOF)まで、残りの内容を順次読み込み、PHPの出力機構を通じて直接クライアント(例えばウェブブラウザ)へ送信します。

この関数の大きな利点は、特に大きなサイズのファイルを扱う際に、メモリ効率が非常に優れている点です。ファイルの内容をすべて一度にPHPのメモリに読み込むのではなく、データを読み出し次第すぐに出力するため、システムメモリの消費を最小限に抑えながら、効率的にファイルの内容を提供できます。

また、fpassthru関数はバイナリセーフであるため、テキストファイルはもちろんのこと、画像、音声、PDFといったあらゆる種類のバイナリファイルも、破損させることなく安全に出力することが可能です。関数は、出力したバイト数を整数で返します。もしエラーが発生した場合はfalseを返します。この関数を実行すると、ファイルポインタはファイルの終端に移動します。

基本的な使い方

構文(syntax)

<?php
$filePointer = fopen("php://temp", "r+");
fwrite($filePointer, "This text will be output directly by fpassthru.");
fseek($filePointer, 0);
fpassthru($filePointer);
fclose($filePointer);
?>

引数(parameters)

resource $stream

  • stream: resource: 読み書き対象のストリームリソース

戻り値(return)

int|false

fpassthru関数は、ファイルポインタが指す位置からファイルストリームの終端までを標準出力にコピーします。成功した場合は、コピーされたバイト数が返されます。エラーが発生した場合はfalseが返されます。

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