看看file_get_contents
我看到該文檔指出它會將文件作爲字符串加載到內存中,但file()
會爲它創建的數組執行此操作嗎?php文件()將數組放入RAM中嗎?
file()
是否將數據存儲在RAM中?
看看file_get_contents
我看到該文檔指出它會將文件作爲字符串加載到內存中,但file()
會爲它創建的數組執行此操作嗎?php文件()將數組放入RAM中嗎?
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機器和使用長類型),你有100000個整數,所以你顯然需要800000字節。這是 像0.76 MBs。
現在嘗試運行上面的代碼。如果你願意,你可以在網上做。這 給我14649024字節。是的,你聽錯了,那是13.97 MB - 比我們估計的高十八倍。
它還能做什麼?當然,它不會將陣列保存到磁盤。 – Damon
任何創建的東西都會使用一個內存塊 - 變量,數組,對象等。 – Duniyadnd
是的,它的確如此。 ['SplFileObject'](http://php.net/SplFileObject)不支持,但也允許遍歷行。 – mario