phossa2/cache

A PSR-6 compliant PHP caching library

2.0.1 2016-08-26 02:45 UTC

README

Build Status Code Quality Code Climate PHP 7 ready HHVM Latest Stable Version License

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

License

MIT License