НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.2.4 >> [I128-2666] Пересечение кеша у нескольких инсталляций ИРБИС128 на одном хосте📄 Скачать в DOCX
| Тип | Версия | Статус | Приоритет | Исполнитель |
|---|---|---|---|---|
| ⚙️ Исправление ошибок | 2026.2.4 | 🔘 Завершено |
Средний | Ilya Mikhaylenko |
Компоненты: Комплексное решение АБИС ИРБИС64/128
Завершено: 06.07.2026 13:36
Проблема: При одновременной работе нескольких инсталляций ИРБИС128 на одном хосте системный кеш мог использовать общее пространство ключей. Из-за этого одна инсталляция могла получать, перезаписывать или очищать кешированные данные другой инсталляции, что приводило к неожиданным ошибкам в работе модулей.
Решение: Кеш каждой инсталляции теперь автоматически изолируется. Работа, обновление или очистка кеша в одной инсталляции больше не затрагивает кеш другой инсталляции на том же хосте.
Технические подробности:
Для системного кеша добавлен namespace, связанный с корнем инсталляции и DataPath. Namespace применяется к L1-кешу, APCU и SQLite fallback, включая пакетные операции и очистку кеша. Публичные ключи кеша для модулей не изменялись.
-
Задача: https://jira.irbis128.ru/browse/I128-2666
Границы исправления: Исправление ограничено системной подсистемой кеширования ИРБИС128. Публичные ключи кеша для модулей не менялись.
Изменения по файлам:
classes/Cache.php - добавлен namespace ключей текущей инсталляции на основе корня проекта и DataPath; namespace применяется к L1, APCU и SQLite fallback, включая одиночные и пакетные операции. clear() для APCU теперь очищает только ключи текущей инсталляции через APCUIterator. logError() принимает Throwable, как уже ожидали существующие вызовы.Проверка:
C:\i128\php\php.exe -l .\classes\Cache.phpgit diff --checkapc.enable_cli=0: физические ключи имеют prefix I128Cache:v1:<hash>:.apc.enable_cli=1: raw-ключи в APCU не создаются, scoped clear() удаляет namespaced ключи.