看着file_get_contents
我看到文档指出它将文件作为字符串加载到内存中,但是会file()
为它创建的数组执行此操作吗?
是否file()
将数据存储在 RAM 中?
是的,除非明确存储到磁盘,否则 PHP 会将字符串、对象、数组等存储在内存中。
这是一个关于真正使用多少内存数组的很好的测试用例:http: //nikic.github.io/2011/12/12/How-big-are-PHP-arrays-really-Hint-BIG.html
来自文章:
<?php
$startMemory = memory_get_usage();
$array = range(1, 100000);
echo memory_get_usage() - $startMemory, ' bytes';
你希望它是多少?很简单,一个整数是 8 个字节(在 64 位 unix 机器上,使用 long 类型),你有 100000 个整数,所以你显然需要 800000 个字节。这大约是 0.76 MB。
现在尝试运行上面的代码。如果你愿意,你可以在网上做。这给了我 14649024 字节。是的,你没听错,这是 13.97 MB - 是我们估计的 18 倍。