在每篇關於SimpleXML性能和內存使用情況的文章中都提到所有解析的內容都存儲在內存中,處理大文件會導致大量內存使用。 但最近我發現使用SimpleXML處理大文件不會導致大量的內存使用,甚至會導致幾乎沒有內存使用。 有我的測試腳本:PHP SimpleXML大文件沒有額外的內存使用
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
print "OS: " . php_uname() . "\n";
print "PHP version: " . phpversion() . "\n";
print round(memory_get_usage()/1024/1024, 2) . " Mb\n";
$large_xml = '<?xml version="1.0" encoding="UTF-8"?><catalog><products>';
for ($i = 0; $i < 500000; $i++) {
$large_xml .= "<product><id>{$i}</id><name>Product Name {$i}</name><description>Some Description {$i}</description><price>{$i}</price></product>\n";
}
$large_xml .= "</products></catalog>";
print round(memory_get_usage()/1024/1024, 2) . " Mb\n";
$products_sxml = simplexml_load_string($large_xml);
print round(memory_get_usage()/1024/1024, 2) . " Mb\n";
?>
我tesing Linux服務器上運行此腳本,PHP版本:5.3.8輸出功率爲:
操作系統:Linux 2.6.32-5-amd64的#1 SMP週一2月25日○時26分11秒UTC 2013 x86_64的
PHP版本:5.3.8
0.6 MB
65.98 MB
65.98 MB
所以我的問題是 - 沒有任何人注意到它,這可能是一個解釋這個,因爲我不能在網絡的任何地方找到它的explanaition - 甚至沒有關於它的確認?
歡迎來到SO。請考慮儘可能簡化您的問題。需要兩三次才能明白你在問什麼。 – dic19
問題是 - 有人可以解釋爲什麼在使用SimpleXML處理大型XML文件時沒有額外的內存使用 - 因爲在每篇關於SimpleXML的文章中都提到大量內存使用是最大的缺點。 – Aigars