fpassthru

ファイルポインタ上に残っているすべてのデータを出力する

説明

int fpassthru(resource $stream)

与えられたファイルポインタを EOF まで読み、結果を出力バッファに書き出します。

ファイルに既にデータを書き終えている場合で ファイルポインタをファイルの先頭にリセットするには rewind をコールする必要があります。

ファイルを更新したり特定のオフセットを探すのではなく 内容を出力バッファにダンプしたいだけの場合、 readfile を使用することが可能です。 この場合、fopen コールは必要ありません。

パラメータ

stream

ファイルポインタは、有効なファイルポインタである必要があり、 fopen または fsockopen で正常にオープンされた (そしてまだ fclose でクローズされていない) ファイルを指している必要があります。

戻り値

fpassthrustream から読み込み、出力に渡した文字数を返します。

例1 バイナリファイルに対する fpassthru の使用例

<?php

// バイナリモードでファイルをオープンする
$name = './img/ok.png';
$fp = fopen($name, 'rb');

// 正しいヘッダを送出する
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));

// 画像をダンプしスクリプトを終了する
fpassthru($fp);
exit;

?>

注意

注意:

fpassthru を Windows システムのバイナリファイルで 使用する場合、fopen をコールする際に モードに b を追加してバイナリモードでファイルを オープンするようにしてください。

バイナリファイルを扱う場合は、必要でなくても b フラグを使用するようにしましょう。 それにより、スクリプトの可搬性がより高くなります。

参考

  • readfile
  • fopen
  • popen
  • fsockopen