什么是两者之间的区别?
$contents = file_get_contents("folder/somefile.txt")
并且
$handle = fopen("folder/somefile.txt", "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
就性能、文件指针处理和内存管理而言,哪种方法更好?
如果操作系统允许,file_get_contents
是否使用 mmap
?
什么是两者之间的区别?
$contents = file_get_contents("folder/somefile.txt")
并且
$handle = fopen("folder/somefile.txt", "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
就性能、文件指针处理和内存管理而言,哪种方法更好?
如果操作系统允许,file_get_contents
是否使用 mmap
?
fread有读取字符数的限制,适用于解析数据。
file_get_contents没有输入限制(据我所知)。这通常用于访问外部API等情况。
fread()
函数用于读取二进制数据,而file_get_contents()
函数则将数据作为字符串返回。
fread()
读取文件时,应该使用 b
标志打开文件以确保它是二进制安全的,而使用 file_get_contents()
则始终是二进制安全的。 - piotrp有趣的结果!file_get_contents()函数被认为是fopen的包装器,但是将fopen和fread解耦似乎使性能变慢了。
http://www.ebrueggeman.com/blog/php_benchmarking_fopen
fread
的问题,它在从文件读取序列化数据时截断了一些字符。 - Smile