fgets
読み取り1行-つまり、改行で停止します。
fread
読み取り生データ-指定された(またはデフォルト)バイト数の後に、存在するかどうかに関係なく改行とは無関係に停止します。
これら2つの関数は同じことを行わないため、速度はどちらか一方を他方で使用する理由にはなりません。
fgets
を使用します。fread
を使用します 。バイナリデータのfread()およびfreadには、読み取ることができる文字数に制限があります。
$source_file = fopen( $filename, "r" ) or die("Couldn't open $filename");
while (!feof($source_file)) {
$buffer = fread($source_file, 5);
var_dump($buffer); //return string with length 5 chars!
}
番号5は、バイトが読み取られた長さです。
関数fgetsは、テキストファイルから1行を読み取ります。現在の行の終わり(またはファイルの終わり)に達するまで、それは非常に長く読み取っています。したがって、テキストファイルから1行を読み取る場合は、fgetsを使用する必要があります。関数freadは、行の終わりまで読み取るだけでなく、ファイルの終わりまで読み取ります[例: fread($ handle)]またはパラメーターとして指定されたバイト数[例: fread($ handle、1024)]。したがって、ファイルがすべて含まれているテキストファイルであるか、ファイルからの任意の生データであるかに関係なく、完全なファイルを読みたい場合は、freadを使用する必要があります。
両方の関数は、ファイルからデータを読み取るために使用されます
fgets($ filename、$ bytes)fgetsは通常、$ bytes-1の量のデータを読み取り、改行またはEOF(ファイルの終わり)のどちらか先に来たところで停止します。バイトが指定されていない場合、デフォルト値は1024バイトです。
fread($ filename、$ bytes)freadは正確に$ bytesの量のデータを読み取り、EOFでのみ停止します。