feat: добавлена функция для упрощения анализа XML, удаляющая содержимое тегов <crs:data></crs:data>#24
Conversation
…ое тегов <crs:data></crs:data>
|
@infina15 посмотришь? у меня на ЕРПУХ проблему исправило. |
|
@johnnyshut а что именно полечило-то? Перестало зависать? Жрало память, теперь не жрет? Мне просто кажется еще большие запросы надо в файл на диск складывать |
Без этих строк помещение версии от 1 Гб в хранилище зависало и не подавало признаков жизни. Из того, как еще оптимизировать, я бы само получение СтрокиXML изменил, чтобы читать в потоке и пропускать блок |
|
Добавлю, что не просто 1Гб версия должна быть, а машина с сервером хранилища должна быть нагружена выше среднего. |
Оптимизация разбора запросов помещения в хранилище (crs:data)
Закрывает: #11 #12 #20 #22
Проблема: При больших запросах на помещение блок
<crs:data>занимает основной объём тела. ЧтениеXML тормозит на таком объёме, а для проверки комментариев и метаданных содержимоеcrs:dataне нужно.Решение: Для анализа собирать облегчённый XML без содержимого
crs:data.Функция
ПолучитьОблегчённыйXMLДляАнализа(СтрокаXML)Вырезает содержимое между
<crs:data>и</crs:data>, оставляя пустые теги. ВПолучитьПараметрыЗапросапослеПолучитьТекстХМЛвызывается эта функция, в ЧтениеXML передаётся уже облегчённая строка.Функция
ПолучитьОблегчённыйТекстXMLИзПотока(ДвоичныеДанныеЗапроса)Потоковое чтение по кускам (64 КБ): копирует в результирующую строку только фрагменты до
<crs:data>и после</crs:data>, между тегами подставляет<crs:data></crs:data>. Содержимоеcrs:dataни разу не загружается в память — снижается пик памяти и ускоряется разбор.Файл:
src/Модули/ОбработкаДанных.os