Работа с большими XML-файлами в PHP - PullRequest
1 голос
/ 26 января 2012

У меня проблема с использованием XMLParser и simplexml_load_dom. Я пытаюсь найти в 4 с 2 МБ каждого файла и в файле 27 МБ. Проблема не в памяти, а во времени выполнения (около 50 с). Как я могу оптимизировать код?

public function searchInFeed()
{
    $feed =& $this->getModel('feed','afiliereFeeduriModel');
    $myfeeds = $feed->selectFeed();
    foreach ($myfeeds as $f)
    {
        $x = new XMLReader();

        $x->open($f->url);
        $z = microtime(true);
        $doc = new DOMDocument('1.0', 'UTF-8');
        set_time_limit(0);

        while ($x->read())
        {

            if ($x->nodeType === XMLReader::ELEMENT)
            {
                $nod = simplexml_import_dom($doc->importNode($x->expand(), true));

                $data['text'] = 'Chicco termometru';
                $data['titlu'] = 'title';
                $data['nod'] = &$nod;
                if ($this->searchInXML($data))
                {
                    echo $nod->title."<br>";
                }
                $x->next();
            }
        }
    }
    echo microtime(true) - $z."<br>";
    echo memory_get_usage()/1024/1024;
    die();
}
...