parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

На сервере не хватает памяти...

Sumo 24.05.2013 20:48 / 24.05.2013 20:48

С этим можно и нужно «бороться». Поскольку вы не показали код, который разбирает xml'ь, то можно порекомендовать следующее:
— Начните собирать мусор после того, как разберете очередной кусочек xml'я. Сейчас по ошибке видно, что вы вообще не освобождаете память — в Парсере это делается в ручном режиме. См. http://www.parser.ru/docs/lang/memorycompact.htm
— Не стоит собирать мусор на каждой итерации цикла — это медленно. Лучше использовать сборку на «каждом десятом» (сотом, тысячном) шаге или воспользоваться другим интеллектуальным механизмом — http://www.parser.ru/examples/erusage/
— Если массово используете xpath-выражения, то постарайтесь перейти на dom-методы. И памяти будете расходовать меньше и скорость разбора увеличится значительно.
— Иногда возможно разобрать xml регулярными выражениями, но это стоит делать только если первые предыдущие пункты не помогли. (Что для 10 мегабайтного файла вряд ли возможно.)

p.s. Для распаковки gz-файла из Паресера можно вызвать утилиту gunzip через file::exec. :)