НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.2 >> [I128-2256] Оптимизация производительности модуля Queue через кэширование и рефакторинг📄 Скачать в DOCX
| Тип | Версия | Статус | Приоритет | Исполнитель |
|---|---|---|---|---|
| ⚙️ Новые возможности | 2026.2 | 🔘 Завершено |
Средний | Ilya Mikhaylenko |
Компоненты: ИРБИС 128. Модуль Queue - Очередь задач
Завершено: 26.03.2026 15:46
Очередь задач: Оптимизация производительности модуля Queue через кэширование и рефакторинг
Основные изменения:
Статусы задач (progress, progressmsg, lastactivity) теперь сохраняются в кэш с ключом QueueTaskStatus_ \{ID}. Это снижает нагрузку на файловую систему и БД при частом обновлении прогресса.
Глобальные состояния очереди (QueuePaused, QueueOnlyHigh) теперь также кэшируются, что ускоряет проверку состояния в циклах диспетчера и потоков.
GetRecordBlock и GetSingleRow удалена избыточная десериализация полей lastactivity, progress и progressmsg из БД, так как эти данные теперь приоритетно обрабатываются через кэш.SqlBatch) в процессах очистки завершенных, ошибочных и зависших задач.GetTaskForStart добавлен фильтр started < time(), предотвращающий преждевременный запуск отложенных задач.int для TaskId, удаление спецсимволов и путей из имен файлов/ключей в RetrieveRemoteResult и GetTaskInfoElm).FileLock): теперь блокировки корректно снимаются даже при пропуске итераций.GetModuleRec) перед операциями с данными.?> в PHP-файлах согласно стандартам PSR.ProcessThread добавлен метод LogMessage для централизованного логирования с префиксом ID потока.Vacuum.inc (добавлено приведение ID к числу).RetrieveRemoteResult добавлена очистка результата после его получения (SidFileRemove), чтобы избежать повторного чтения старых данных.-
Основные изменения:
Внедрение кэширования (Cache):
progress, progressmsg, lastactivity) теперь сохраняются в кэш с ключом QueueTaskStatus_{ID}. Это снижает нагрузку на файловую систему и БД при частом обновлении прогресса.QueuePaused, QueueOnlyHigh) теперь также кэшируются, что ускоряет проверку состояния в циклах диспетчера и потоков.Оптимизация работы с БД и памятью:
GetRecordBlock и GetSingleRow удалена избыточная десериализация полей lastactivity, progress и progressmsg из БД, так как эти данные теперь приоритетно обрабатываются через кэш.SqlBatch) в процессах очистки завершенных, ошибочных и зависших задач.GetTaskForStart добавлен фильтр started < time(), предотвращающий преждевременный запуск отложенных задач.Безопасность и стабильность:
int для TaskId, удаление спецсимволов и путей из имен файлов/ключей в RetrieveRemoteResult и GetTaskInfoElm).FileLock): теперь блокировки корректно снимаются даже при пропуске итераций.GetModuleRec) перед операциями с данными.Рефакторинг и локализация:
?> в PHP-файлах согласно стандартам PSR.ProcessThread добавлен метод LogMessage для централизованного логирования с префиксом ID потока.Исправление ошибок:
Vacuum.inc (добавлено приведение ID к числу).RetrieveRemoteResult добавлена очистка результата после его получения (SidFileRemove), чтобы избежать повторного чтения старых данных.[I128-2253] Многоуровневое кеширование
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2280] Оптимизация производительности модуля Queue через кэширование и рефакторинг
Статус: Открытая задача | Автор: Ilya Mikhaylenko