PHP процессор для обработки xml+xslt?

Есть исходный xml магазина (или php скрипт, генерирующий xml каталог из базы)

и xslt (генерирующийся на php динамически в зависимости от параметров, передаваемых скрипту)



Суть проблемы: если обрабатывается xml файл порядком до 10МБ, то все норм.

а вот на xml ~17+ mb валится из-за нехватки памяти. (на сервере выставил максимальное время обработки скрипта и максимально возможную выделяемую память, проблема не решилась)



обработку делаю через xsltprocessor

$xml = new DOMDocument;<br>
$xml->load('http://site.ru/yandex_market.php');<br><br>
$xsl = new DOMDocument;<br>
$xsl->load('http://mysite.ru/manager/template.php?a='.$_GET['a'].'&o='.$_GET['o'].'&c='.$_GET['c']);<br><br>
// Configure the transformer<br>
$proc = new XSLTProcessor;<br>
$proc->importStyleSheet($xsl); // attach the xsl rules<br><br>
echo $proc->transformToXML($xml);<br>




если запускать через подобный скрипт, ругается на xslt_create(), хотя в phpinfo модули xml, xlst подключены

<?php<br><br>
// Разместить новый XSLT-процессор<br>
$xh = xslt_create();<br><br>
// Обработать документ<br>
if (xslt_process($xh, 'sample.xml', 'sample.xsl', 'result.xml')) {<br>
print "SUCCESS, sample.xml was transformed by sample.xsl into result.xml";<br>
print ", result.xml has the following contents\n<br>\n";<br>
print "<pre>\n";<br>
readfile('result.xml');<br>
print "</pre>\n";<br>
}<br>
else {<br>
print "Sorry, sample.xml could not be transformed by sample.xsl into";<br>
print "result.xml the reason is that " . xslt_error($xh) . " and the ";<br>
print "error code is " . xslt_errno($xh);<br>
}<br><br>
xslt_free($xh);<br><br>
?><br>




ну и вообще, не знаю поможет ли это?!



Вообще суть задачи заменить ссылки в offer/url (см. yml) на свои.
  • Вопрос задан
  • 4368 просмотров
Решения вопроса 1
Комментировать
Пригласить эксперта
Ответы на вопрос 1
za90
@za90
быдлокодер со стажем
Не вдаваясь в дебри php-кода могу напомнить только одно — в случае нехватки памяти (DOM жирный, не помещается) надо менять парсер на SAX
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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