besnovatyj / yii2-cms-apcu
Модуль просмотра и управления пользовательским кэшем APCu (порт apc.php) для Yii2 CMS
Package info
github.com/besnovatyj/yii2-cms-apcu
Type:yii2-extension
pkg:composer/besnovatyj/yii2-cms-apcu
Requires
- php: >=8.4
- ext-apcu: *
- besnovatyj/yii2-cms-backend-widgets: ^1.0
- besnovatyj/yii2-cms-contracts: ^1.0
- besnovatyj/yii2-cms-forms: ^1.0
- besnovatyj/yii2-cms-kernel: ^1.0
- yiisoft/yii2: ~2.0.0
- yiisoft/yii2-bootstrap5: ~2.0.0
Requires (Dev)
- roave/security-advisories: dev-latest
Suggests
None
Provides
None
Conflicts
None
Replaces
None
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.