2011-08-25 15 views
13

管理、パフォーマンス、ファイルポインタの処理とメモリの面でのfile_get_contentsと関数freadの違いは何ですか

$contents = file_get_contents("folder/somefile.txt") 

$handle = fopen("folder/somefile.txt", "r"); 
$contents = fread($handle, filesize($filename)); 
fclose($handle); 

の違いは何ですか?

OSによって許可されている場合、file_get_contentsはmmapを使用するのは本当ですか?

答えて

4

fread()はバイナリデータを読み込み、file_get_contents()はデータを文字列として返します。

+0

私は、コードの2 snipetsを比較する、と私はあなたにもcondiderしたい 'パフォーマンス、ファイルポインタの処理とメモリmanaging' –

+6

間違った - 関数fread'と() 'あなたは 'B'フラグを使用してファイルを開く必要があります'file_get_contents()'は常にバイナリセーフです。 – Crack

+0

あなたのコメントは@Crackが好きです。ちなみに素敵な回答はOrganized – NullPointer

5

freadには、読み取ることができる文字の数に制限があり、データを解析するのに優れています。

file_get_contentsには(私が知っている)入力に制限はありません。これは、外部APIアクセスなどに使用されます。

+0

私が 'fread'で問題を抱えていたことを修正しました。それは、ファイルからの読み取り中にデータを直列化する文字を切り捨てていました。 – NullPointer

関連する問題