2011-08-25 83 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