Как снизить нагрузку на процесcор при парсинге xml?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
lolka
Сообщения: 143
Зарегистрирован: 2013.05.05, 20:59

Как снизить нагрузку на процесcор при парсинге xml?

Сообщение lolka »

Скачиваю файлы весом от 30 до 700мб, часто бывает большая нагрузка на процессор, как можно решить эту проблему?
Использую расширение от Hobnob\XmlStreamReader\Parser для yii2

Код: Выделить всё

$parser = new \Hobnob\XmlStreamReader\Parser();
        $parser->registerCallback(
            '/source/products/product',
            function( \Hobnob\XmlStreamReader\Parser $parser, \SimpleXMLElement $node ) {
               $this->parseListing($node);


            }
        );
дальше в методе parseListing преобразую в массив

Код: Выделить всё

protected function parseListing($product)
 {
        if (empty($product))
            return;

        $data = $this->xml2array($product);

/*тут уже сохраняю к себе в базу данные из $data*/
}
protected function xml2array($xml)
    {
        $arr = array();
        foreach ($xml->children() as $r)
        {
            /** @var \SimpleXMLElement $r */
            if (count($r->children()) == 0)
                $arr[$r->getName()] = strval($r);
            else
                $arr[$r->getName()][] = $this->xml2array($r);
        }
        return $arr;
    }
Ответить