Search by

besnovatyj / yii2-cms-apcu

besnovatyj

Модуль просмотра и управления пользовательским кэшем APCu (порт apc.php) для Yii2 CMS

Package info

github.com/besnovatyj/yii2-cms-apcu

Type:yii2-extension

pkg:composer/besnovatyj/yii2-cms-apcu

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.1 2026-09-13 17:40 UTC

This package is auto-updated.

Last update: 2026-09-13 17:42:23 UTC


README

Просмотр и управление пользовательским кэшем APCu из админки — порт apc.php из репозитория расширения (krakjoe/apcu) на стек Yii2-cms.

Отладочный инструмент. Показывает всё содержимое кэша без сокрытия чувствительных данных (кэшированные ответы БД, схема, собранные конфиги). Доступ ограничивается только RBAC-гейтом закрытого бэкенда — права на маршруты модуля выдавать одному администратору. На продакшен не предназначен.

Экраны

Один в один с разделами оригинала (OB_HOST_STATS / OB_USER_CACHE / OB_VERSION_CHECK):

Статистика хоста — Apcu/backend/apcu/index

  • Общая информация: версии APCu/PHP, хост, сервер, сегменты общей памяти и их тип, время старта, uptime.
  • Кэш: записей и их объём, хиты, промахи, вставки, скорости (запросов/хитов/промахов/вставок в секунду), счётчики cleanups, defragmentations, expunges (cache full).
  • Настройки: все директивы ini_get_all('apcu').
  • Диаграммы: круг использования памяти (каждый блок — сектор, фрагментация видна как «нарезка»), столбики хиты/промахи. Inline-SVG, без GD и без отдельных запросов.
  • Карта памяти по сегментам (занято/свободно по смещениям, tooltip с размером) и расчёт фрагментации по формуле apc.php (доля свободных блоков < 5 МБ; один свободный блок = 0 %).
  • Распределение аллокаций adist — если расширение его отдаёт (в APCu 5 нет).

Записи кэша — Apcu/backend/apcu/entries

  • Область: активные (cache_list) / удалённые (deleted_list).
  • Сортировка по любой колонке (клик по заголовку меняет направление): ключ, хиты, размер, последний доступ, изменение, создание, TTL, удаление.
  • Размер страницы: Top 10/20/50/100/150/200/500/Все + постраничка.
  • Поиск по регулярному выражению (без ограничителей, регистронезависимый; preg_quote не применяется намеренно — можно задавать подшаблоны).
  • Клик по ключу раскрывает значение: тип, длина, apcu_key_info(), разбор PHP-serialized строки (unserialize с allowed_classes => false — объекты как __PHP_Incomplete_Class со всеми полями, код кэшированных классов не исполняется) и сырое значение.
  • Удаление записи и очистка всего кэша — POST + CSRF с подтверждением.

Проверка версии — Apcu/backend/apcu/version

Сравнение с последним релизом в RSS-ленте PECL. Запрос исходящий, поэтому только по кнопке. Changelog: для актуальной версии — три последних релиза, для устаревшей — все новее установленной. Прокси — настройка peclProxy.

Отличия от оригинала

В apc.php Здесь
Basic Auth с дефолтом apc/password RBAC-гейт бэкенда, встроенной аутентификации нет
?CC=1, ?DU=key по GET POST + CSRF-токен, data-confirm
PNG через GD (?IMG=) inline-SVG
Проверка версии при открытии раздела по кнопке
SH=<md5> раскрывает запись key=<ключ> (ключ передаётся как есть)

Что нужно знать про ключи

yii\caching\Cache::buildKey() оставляет ключ как есть только для коротких alnum-строк; массивы, TagDependency и длинные строки превращаются в md5. Поэтому в списке часть ключей читаема, часть — хэши. К ключу добавляется keyPrefix компонента cache.

Значение записи у Yii — строка serialize([$value, $dependency]), отсюда разбор на экране.

Область видимости кэша

APCu живёт в памяти SAPI-процесса: модуль показывает кэш web-пула php-fpm, в котором работает бэкенд. У CLI (php yii ...) своя память (и только при apc.enable_cli=1) — её здесь не видно. Если backend и frontend обслуживает один пул, кэш общий и правки видны обоим.

Настройки (yii2-cms-config)

Опция Параметр По умолчанию
Записей на странице modules.Apcu.params.pageSize 50
Предел вывода значения, байт modules.Apcu.params.valueMaxBytes 262144
Прокси для проверки версии modules.Apcu.params.peclProxy
Формат дат modules.Apcu.params.dateFormat Y-m-d H:i:s

Маршруты (backend)

  • Apcu/backend/apcu/index — статистика хоста.
  • Apcu/backend/apcu/entries — записи (scope, sort, dir, count, search, key, page).
  • Apcu/backend/apcu/version — проверка версии (GET — страница, POST — запрос к PECL).
  • Apcu/backend/apcu/delete — POST, key в теле.
  • Apcu/backend/apcu/clear — POST.