从评论到this answer我认为“stream_get_contents
与file_get_contents
相比较低”。但是根据Manual,stream_get_contents
是
与file_get_contents()相同,但stream_get_contents()对已经打开的流资源进行操作,并返回字符串中的剩余内容,最多为maxlength个字节,并从指定的偏移量开始。
哪种说法是正确的?
stream_get_contents
真的更低,更快吗?
具体来说,我有兴趣从HD中读取本地文件。
答案 0 :(得分:1)
我来晚了,但它可能会帮助其他人
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() 将整个数据转储到内存中。