phossa2 / cache
A PSR-6 compliant PHP caching library
Requires
- php: ~5.4|~7.0
- phossa2/event: ^2.1.6
- phossa2/shared: ^2.0.27
- phossa2/storage: ^2.0.0
- psr/cache: ^1.0
Requires (Dev)
- phpunit/phpunit: 4.*
Suggests
- psr/log-implementation: Allows log messages
Provides
- psr/cache-implementation: 1.0.0
Replaces
This package is not auto-updated.
Last update: 2020-01-24 16:10:39 UTC
README
Please use phoole/cache instead.
phossa2/cache is a PSR-6 compliant caching library for PHP. It supports various drivers and useful features like bypass, encrypt, stampede protection etc.
It requires PHP 5.4, supports PHP 7.0+ and HHVM. It is compliant with PSR-1, PSR-2, PSR-3, PSR-4, PSR-6 and the proposed PSR-5.
Installation
Install via the composer
utility.
composer require "phossa2/cache"
or add the following lines to your composer.json
{ "require": { "phossa2/cache": "2.*" } }
Features
-
Fully PSR-6 compliant.
-
Support all serializable PHP datatypes.
-
Extensions included:
-
Bypass: If sees a trigger in URL (e.g. '?nocache=true'), bypass the cache.
-
Stampede Protection: Whenever cached object's lifetime is less than a configurable time, by a configurable percentage, the cache will return false on 'isHit()' which will trigger re-generation of the object.
-
Encrypt: A simple extension to encrypt the serialized content.
-
DistributedExpiration: Even out the spikes of item misses by alter expiration time a little bit.
-
-
Drivers
-
StorageDriver
The storage driver uses phossa2/storage local or cloud storage.
-
NullDriver
The blackhole driver, can be used as fallback driver for all other drivers.
-
Usage
-
Simple usage
/* * cache dir default to local sys_get_temp_dir() . '/cache' */ $cache = new CachePool(); $item = $cache->getItem('/data.cache'); if (!$item->isHit()) { $value = calcuate_data(); $item->set($value); $cache->save($item); } $data = $item->get();
-
Specify the driver
use Phossa2\Cache\Driver\StorageDriver; use Phossa2\Storage\Storage; use Phossa2\Storage\Filesystem; use Phossa2\Storage\Driver\LocalDriver; $driver = new StorageDriver( new Storage('/', new Filesystem(new LocalDriver(sys_get_temp_dir()))), '/cache' ); $cache = new CachePool($driver);
-
Use extensions
/* * DistributedExpiration extension */ use Phossa2\Cache\CachePool; use Phossa2\Cache\Extension\DistributedExpiration; $cache = new CachePool(); $cache->addExtension(new DistributedExpiration());
Change log
Please see CHANGELOG from more information.
Testing
$ composer test
Contributing
Please see CONTRIBUTE for more information.
Dependencies
-
PHP >= 5.4.0
-
phossa2/event >= 2.1.4
-
phossa2/storage >= 2.0.0