2011-08-25 112 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); 

之間的區別?

如果操作系統允許,file_get_contents是否使用mmap是真的嗎?

回答

4

fread()讀取二進制數據,file_get_contents()以字符串形式返回數據。

+0

我比較兩個snipets的代碼,我也喜歡你condider也'性能,文件指針處理和內存管理' –

+6

錯 - 用'fread()'你應該用'b'標誌打開文件來確保它是二進制安全的,而'file_get_contents()'始終是二進制安全的 – Crack

+0

我喜歡你的評論@Crack。順便說一句很好的答案組織 – NullPointer

5

fread對您可以讀取的字符數有限制,對解析數據更好。

file_get_contents對輸入沒有限制(我知道的)。這用於外部API訪問等。

+0

正確,我遇到了'fread'的問題。從文件讀取時,它正在截斷序列化數據的字符。 – NullPointer

相關問題