пошел еще одним путем Код (Text): if(!($fp = fopen('xml/apc101231-42.xml', "r"))); while ($data = fread($fp, 4096)) { if (preg_match_all('/<case-file>(.*?)<\/case-file>/msi', $data, $arrXml)) { print_r($arrXml); } } но проблем не меньше. первая почему то не все выбирает а только: не все данные. потом это надо будет как то пропустить через simple XML что бы получить(вставить) в mongodb
сделал иначе Код (Text): <?php function ExtractString($str, $start, $end) { $str_low = strtolower($str); $pos_start = strpos($str_low, $start); $pos_end = strpos($str_low, $end, ($pos_start + strlen($start))); if ( ($pos_start !== false) && ($pos_end !== false) ) { $pos1 = $pos_start + strlen($start); $pos2 = $pos_end - $pos1; return substr($str, $pos1, $pos2); } } if(!($fp = fopen('xml/apc101231-42.xml', "r"))); while ($data = fread($fp, 4096)) { $match = ExtractString($data, '<case-file>', '</case-file>'); echo $match; } ?> но все равное почему то не доконца выберает <correspondent> <address-1>?</address-1> </correspondent>
откройте для себя xdebug trace http://www.xdebug.org/docs/execution_trace. покажет по каждой операции сколько памяти потребляет.
Запустил скрипт на линуксе(правда без Монги) все отлично! спарсило намного быстрее и потребило оперативки 1 метр! на 400 метров xml файла. Вообщем завтра еще с монгой проверю. А в винде жрет не мерено памяти, жирная утечка в Винде