2013-08-21 46 views
0

看看file_get_contents我看到該文檔指出它會將文件作爲字符串加載到內存中,但file()會爲它創建的數組執行此操作嗎?php文件()將數組放入RAM中嗎?

file()是否將數據存儲在RAM中?

+3

它還能做什麼?當然,它不會將陣列保存到磁盤。 – Damon

+0

任何創建的東西都會使用一個內存塊 - 變量,數組,對象等。 – Duniyadnd

+1

是的,它的確如此。 ['SplFileObject'](http://php.net/SplFileObject)不支持,但也允許遍歷行。 – mario

回答

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機器和使用長類型),你有100000個整數,所以你顯然需要800000字節。這是 像0.76 MBs。

現在嘗試運行上面的代碼。如果你願意,你可以在網上做。這 給我14649024字節。是的,你聽錯了,那是13.97 MB - 比我們估計的高十八倍。

+0

這真的很有啓發性。謝謝。 – marxo

+0

使用我的文件時,它會在2GB測試機器上返回'3568385048字節'。 – marxo