stream_get_contents比file_get_contents更底层和更快速吗?

7
这个答案的评论中,我读到了"stream_get_contentsfile_get_contents低级"。然而根据手册stream_get_contentsfile_get_contents是相同的。

除了stream_get_contents在一个已经打开的流上操作,并且返回从指定偏移量开始,最多长度为maxlength字节的剩余内容的字符串之外,其他方面和file_get_contents完全一致。

哪种说法是正确的? stream_get_contents真的更低级和更快吗?
特别是我对从硬盘读取本地文件感兴趣。
1个回答

3

我来晚了,但这可能对其他人有帮助

file_get_contents()函数将文件内容加载到内存中。它一直待在内存中,并等待程序调用echo命令时将其传递到输出缓冲区。

一个很好的使用示例是:

echo file_get_contents('file.txt');

stream_get_contents()函数返回已经打开流的内容。例如:

$handle = fopen('file.txt', 'w+');
echo stream_get_contents($handle);

你可以看到,stream_get_contents() 使用由 fopen() 创建的现有流来将内容作为字符串获取。

file_get_contents() 是更受欢迎的方式,因为它不依赖于打开的流,并且使用内存映射技术有效地管理内存。对于读取外部网站的内容,您还可以在获取内容时设置HTTP头。(有关更多信息,请参见https://www.php.net/manual/en/function.file-get-contents.php

对于较大的文件/资源,stream_get_contents() 可能更受欢迎,因为它会分段传递内容,而 file_get_contents() 则会将整个数据倾入内存。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接