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) на свои.
  • Вопрос задан
  • 4366 просмотров
Решения вопроса 1
Комментировать
Пригласить эксперта
Ответы на вопрос 1
za90
@za90
быдлокодер со стажем
Не вдаваясь в дебри php-кода могу напомнить только одно — в случае нехватки памяти (DOM жирный, не помещается) надо менять парсер на SAX
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽