【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が返されます。