phpsoftbox / cache
Cache component (PSR-6/PSR-16) for the PhpSoftBox framework
v1.0.0
2026-09-29 10:23 UTC
Requires
- php: ^8.5
- psr/cache: ^3.0
- psr/simple-cache: ^3.0
Requires (Dev)
- phpsoftbox/cli-app: ^1.0
- phpsoftbox/cs-fixer: ^1.2.2
- phpunit/phpunit: ^13.3
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-29 11:50:46 UTC
README
About
phpsoftbox/cache — компонент кеширования для PhpSoftBox.
Ключевые свойства:
- основной сервис для DI:
PhpSoftBox\Cache\Cache - несколько сторов (stores) по имени:
default,files,redisи т.д. - расширяемые драйверы через
DriverFactoryInterface - поддержка PSR-16 и PSR-6 поверх одного драйвера стора
- namespace стора и вложенные namespace;
clear()очищает только свой namespace - контекстный namespace (например, изоляция арендаторов) через
Cache::setContextNamespace()
Установка и требования
- PHP ^8.5 (см.
composer.json) - Установите пакет:
composer require phpsoftbox/cache - Опциональные расширения/сервисы для драйверов:
ext-redis,ext-memcached,ext-pdo(доступ к БД для PDO).
Quick Start
Без DI
use PhpSoftBox\Cache\Configurator\CacheBuilder; $config = [ 'default' => 'default', 'stores' => [ 'default' => [ 'driver' => 'array', 'namespace' => 'app', 'default_ttl' => 60, ], ], ]; $cache = CacheBuilder::fromConfig($config); $cache->store()->set('foo', 'bar', 30);
Через DI
См. пример для PHP-DI в документации: docs/04-di.md.
Важное о семантике
- TTL
0и отрицательный TTL (иexpiresAtв прошлом для PSR-6) удаляют запись. - Ключи PSR-16 и PSR-6 не могут содержать
{}()/\@:;:— разделитель namespace. clear()стора с namespace очищает только этот namespace (и вложенные). Store без namespace очищает всё хранилище драйвера: для Redis —FLUSHDBтекущей базы, для Memcached — весь сервер. Для Redis/Memcached всегда задавайтеnamespace. Подробнее: docs/03-configuration.md.
CLI
Пакет регистрирует команду cache:prune, если приложение использует
phpsoftbox/cli-app и package command discovery:
php psb cache:prune php psb cache:prune --store=default --tmp-max-age-hours=24 --max-age-days=30
Команда удаляет expired-записи, битые cache-файлы и старые временные файлы.
Permanent-записи без TTL удаляются только при явном --max-age-days.