0

看着file_get_contents我看到文档指出它将文件作为字符串加载到内存中,但是会file()为它创建的数组执行此操作吗?

是否file()将数据存储在 RAM 中?

4

1 回答 1

1

是的,除非明确存储到磁盘,否则 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 倍。

于 2013-08-21T20:41:49.247 回答