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

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) на свои.
  • Вопрос задан
  • 4374 просмотра
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
Комментировать
Пригласить эксперта
Ответы на вопрос 1
za90
@za90
быдлокодер со стажем
Не вдаваясь в дебри php-кода могу напомнить только одно — в случае нехватки памяти (DOM жирный, не помещается) надо менять парсер на SAX
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽