Задать вопрос

Как снизить нагрузку на процес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;
    }
  • Вопрос задан
  • 258 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Onskills
    PHP: базовый курс
    1 месяц
    Далее
  • teamcoding
    TC200PY Разработка PHP веб-приложений на Yii2. Шаблон приложения advanced
    3 месяца
    Далее
  • FructCode
    Yii2 Фреймворк
    2 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
скорее всего серьезно снизить нагрузку не получится, иксмл сильно избыточный и тяжелый, а учитывая вес файлов который вы привели это реально нагружать должно по самое огого. Как вариант, если это не приоритетная задача, запустить в консоли с малым приоритетом, будет медленнее, но проц будет не так нагружен в пике.
Ответ написан
Ваш ответ на вопрос

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

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