Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中使用XMLReader时CPU使用率很高_Php_Xml Parsing_Large Files_Xmlreader - Fatal编程技术网

在PHP中使用XMLReader时CPU使用率很高

在PHP中使用XMLReader时CPU使用率很高,php,xml-parsing,large-files,xmlreader,Php,Xml Parsing,Large Files,Xmlreader,我有一个巨大的xml文件(23GB)。使用XMLReader进行解析时,只需要很少的内存,但是CPU使用率将达到100%。 我在AWS上使用m3 xlarge机器。原因是什么 下面是用于xml解析的代码 $reader = new XMLReader(); $doc = new DOMDocument; $items = array(); $xml_url = "/home/test/apparel_mp.xml"; try { if (!$reader->open($xml_ur

我有一个巨大的xml文件(23GB)。使用XMLReader进行解析时,只需要很少的内存,但是CPU使用率将达到100%。

我在AWS上使用m3 xlarge机器。原因是什么

下面是用于xml解析的代码

$reader = new XMLReader();
$doc = new DOMDocument;
$items = array();
$xml_url = "/home/test/apparel_mp.xml";
try {
    if (!$reader->open($xml_url)) {
        print "Error to open XML: $xml_url\n";
    } else {
        while ($reader->read()) {
            if ($reader->name == "item_data") {
                $exNode = $reader->expand();
                $node = @simplexml_import_dom($doc->importNode($exNode, true));
                if (!empty($node)) {
                    $item_product = array();
                    $item_product['source_product_id'] = (string) $node->item_basic_data->item_sku;
                    //$item_product['item_brand'] = (string) $node->item_basic_data->item_brand;
                    $item_product['source_title'] = $item_product['title'] = (string) $node->item_basic_data->item_name;
                    $items[] = $item_product;
                }
            }
        }
        $reader->close();
    }
} catch (Exception $e) {

}

是因为simplexml\u import\u dom函数吗?

如果您有这样一个简单的问题,您可能是唯一能够轻松回答的人。删除
simplexml\u import\u dom()
函数,再次运行代码,您将得到答案。在删除或添加其他位的情况下再次测试。我们不能为您的客户这样做。另请参阅:并尝试找出我们无法验证您的问题的原因。通过在while循环中添加一秒延迟,问题得以解决。如果您有这样一个简单的问题,您可能是唯一能够轻松回答的人。删除
simplexml\u import\u dom()
函数,再次运行代码,您将得到答案。在删除或添加其他位的情况下再次测试。我们不能为您的客户这样做。另请参阅:并尝试找出我们无法验证您的问题的原因。通过在while循环中添加一秒延迟,问题得以解决。