Skip to content

feat: добавлена функция для упрощения анализа XML, удаляющая содержимое тегов <crs:data></crs:data> - #24

Closed
johnnyshut wants to merge 1 commit into
infina15:masterfrom
johnnyshut:feature/ignore-crs-data

Conversation

@johnnyshut

Copy link
Copy Markdown

Оптимизация разбора запросов помещения в хранилище (crs:data)

Закрывает: #11 #12 #20 #22

Проблема: При больших запросах на помещение блок <crs:data> занимает основной объём тела. ЧтениеXML тормозит на таком объёме, а для проверки комментариев и метаданных содержимое crs:data не нужно.

Решение: Для анализа собирать облегчённый XML без содержимого crs:data.

  1. Функция ПолучитьОблегчённыйXMLДляАнализа(СтрокаXML)
    Вырезает содержимое между <crs:data> и </crs:data>, оставляя пустые теги. В ПолучитьПараметрыЗапроса после ПолучитьТекстХМЛ вызывается эта функция, в ЧтениеXML передаётся уже облегчённая строка.

  2. Функция ПолучитьОблегчённыйТекстXMLИзПотока(ДвоичныеДанныеЗапроса)
    Потоковое чтение по кускам (64 КБ): копирует в результирующую строку только фрагменты до <crs:data> и после </crs:data>, между тегами подставляет <crs:data></crs:data>. Содержимое crs:data ни разу не загружается в память — снижается пик памяти и ускоряется разбор.

Файл: src/Модули/ОбработкаДанных.os

@johnnyshut

Copy link
Copy Markdown
Author

@infina15 посмотришь? у меня на ЕРПУХ проблему исправило.

@infina15

infina15 commented Feb 4, 2026

Copy link
Copy Markdown
Owner

@johnnyshut а что именно полечило-то? Перестало зависать? Жрало память, теперь не жрет? Мне просто кажется еще большие запросы надо в файл на диск складывать

@johnnyshut

Copy link
Copy Markdown
Author

@johnnyshut а что именно полечило-то? Перестало зависать? Жрало память, теперь не жрет? Мне просто кажется еще большие запросы надо в файл на диск складывать

Без этих строк помещение версии от 1 Гб в хранилище зависало и не подавало признаков жизни.

Из того, как еще оптимизировать, я бы само получение СтрокиXML изменил, чтобы читать в потоке и пропускать блок crs:data, но, это не исправление бага уже, а скорее оптимизация и требует сильно больше ресурсов.

@johnnyshut

johnnyshut commented Feb 4, 2026

Copy link
Copy Markdown
Author

Добавлю, что не просто 1Гб версия должна быть, а машина с сервером хранилища должна быть нагружена выше среднего.

@johnnyshut

Copy link
Copy Markdown
Author

Закрою, чтобы глаз не мазолило

@johnnyshut johnnyshut closed this Apr 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants