Php 文件内容和fread之间有什么区别

Php 文件内容和fread之间有什么区别,php,file,file-io,Php,File,File Io,两者的区别是什么 $contents = file_get_contents("folder/somefile.txt") 及 在性能、文件指针处理和内存管理方面 如果操作系统允许,文件获取内容使用mmap是真的吗?fread()读取二进制数据,文件获取内容()以字符串的形式返回数据。fread对您可以读取的字符数有限制,对解析数据更好 文件内容对输入没有限制(据我所知)。这用于外部API访问等。奇怪的结果!file_get_contents()函数应该是fopen的包装器,但是fopen和f

两者的区别是什么

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

在性能、文件指针处理和内存管理方面


如果操作系统允许,文件获取内容使用
mmap
是真的吗?

fread()
读取二进制数据,
文件获取内容()
以字符串的形式返回数据。

fread对您可以读取的字符数有限制,对解析数据更好


文件内容对输入没有限制(据我所知)。这用于外部API访问等。

奇怪的结果!file_get_contents()函数应该是fopen的包装器,但是fopen和fread的分离似乎会降低性能。

我正在比较两组代码,我希望您也能考虑
性能、文件指针处理和内存管理
错误-使用
fread()
您应该使用
b
标志打开文件,以确保它是二进制安全的,而
file\u get\u contents()
始终是二进制安全的。我喜欢您的注释@Crack。顺便说一句,Organizedcorrect的回答很好,我对
fread
有意见。它在从文件读取时截断序列化数据的字符。file_get_contents还有一个可选的偏移量和长度参数。如果未提供,它将读取整个文件。在Benjamin Crouzier的两个示例中,整个文件都被读入。除了写文件内容比读fopen、fread和fclose要省力之外,我还想知道是否有巨大的性能差异。同样值得注意的是,file_get_内容与包装器一起工作,比如URL@Benjamin Crouzier您从哪里获得文件内容使用mmap(如果可用)的信息?参考文件内容应该比fopen、fread和fclose慢。我自己做了一个基准测试,读取了1000次相同的文件。在1000个文件中,183个文件的读取速度更快,而在1000个文件中,817个文件的读取速度更快,但只有几毫秒。因此,我假设这两个函数在性能上是相同的,哪一个更快取决于环境的状态(负载、文件系统、硬件…)。如果您没有使用实时应用程序,我建议您使用file_get_contents而不是fread。www.ebruegeman.com域名正在出售,因此无法读取基准。
$handle = fopen("folder/somefile.txt", "r");
$contents = fread($handle, filesize($filename));
fclose($handle);