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

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

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


            }
        );


дальше в функции parseListing преобразую в массив

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

        $data = xml2array($product);

/*тут уже сохраняю к себе в базу данные из $data*/
}
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()][] = xml2array($r);
        }
        return $arr;
    }
  • Вопрос задан
  • 254 просмотра
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
скорее всего серьезно снизить нагрузку не получится, иксмл сильно избыточный и тяжелый, а учитывая вес файлов который вы привели это реально нагружать должно по самое огого. Как вариант, если это не приоритетная задача, запустить в консоли с малым приоритетом, будет медленнее, но проц будет не так нагружен в пике.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы