[I128-2256] Оптимизация производительности модуля Queue через кэширование и рефакторинг


НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.2 >> [I128-2256] Оптимизация производительности модуля Queue через кэширование и рефакторинг📄 Скачать в DOCX


Тип Версия Статус Приоритет Исполнитель
⚙️ Новые возможности 2026.2 🔘 Завершено Средний Ilya Mikhaylenko

Компоненты: ИРБИС 128. Модуль Queue - Очередь задач

Завершено: 26.03.2026 15:46

Очередь задач: Оптимизация производительности модуля Queue через кэширование и рефакторинг

Основные изменения:

  1. Внедрение кэширования (Cache):
  1. Оптимизация работы с БД и памятью:
  1. Безопасность и стабильность:
  1. Рефакторинг и локализация:
  1. Исправление ошибок:

-

Основные изменения:

  1. Внедрение кэширования (Cache):

    • Статусы задач (progress, progressmsg, lastactivity) теперь сохраняются в кэш с ключом QueueTaskStatus_{ID}. Это снижает нагрузку на файловую систему и БД при частом обновлении прогресса.
    • Глобальные состояния очереди (QueuePaused, QueueOnlyHigh) теперь также кэшируются, что ускоряет проверку состояния в циклах диспетчера и потоков.
  2. Оптимизация работы с БД и памятью:

    • В методах GetRecordBlock и GetSingleRow удалена избыточная десериализация полей lastactivity, progress и progressmsg из БД, так как эти данные теперь приоритетно обрабатываются через кэш.
    • Добавлена поддержка пакетного выполнения SQL-запросов (SqlBatch) в процессах очистки завершенных, ошибочных и зависших задач.
    • В GetTaskForStart добавлен фильтр started < time(), предотвращающий преждевременный запуск отложенных задач.
  3. Безопасность и стабильность:

    • Добавлена фильтрация входных параметров (приведение к int для TaskId, удаление спецсимволов и путей из имен файлов/ключей в RetrieveRemoteResult и GetTaskInfoElm).
    • Улучшена обработка блокировок (FileLock): теперь блокировки корректно снимаются даже при пропуске итераций.
    • Добавлены проверки на существование записей модуля (GetModuleRec) перед операциями с данными.
  4. Рефакторинг и локализация:

    • Код приведен к единому стандарту форматирования (табуляция вместо пробелов).
    • Заменены нечитаемые символы в JSON-ответах на корректные русские строки (например, "Готово", "Остановлено").
    • Удалены закрывающие теги ?> в PHP-файлах согласно стандартам PSR.
    • В ProcessThread добавлен метод LogMessage для централизованного логирования с префиксом ID потока.
  5. Исправление ошибок:

    • Исправлена логика удаления временных директорий в Vacuum.inc (добавлено приведение ID к числу).
    • В RetrieveRemoteResult добавлена очистка результата после его получения (SidFileRemove), чтобы избежать повторного чтения старых данных.

1. Связанные задачи

1.1. 🔗 blocks: I128-2253

[I128-2253] Многоуровневое кеширование Статус: Завершено | Автор: Ilya Mikhaylenko

1.2. 🔗 Соответствует задача: I128-2280

[I128-2280] Оптимизация производительности модуля Queue через кэширование и рефакторинг Статус: Открытая задача | Автор: Ilya Mikhaylenko