Skip to content
/ Cache Public

PSR-16 is a simple caching library that uses the Simple Cache interface.

License

Notifications You must be signed in to change notification settings

InitPHP/Cache

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

InitPHP Cache

PSR-16 is a simple caching library that uses the Simple Cache interface.

Latest Stable Version Total Downloads Latest Unstable Version License PHP Version Require

Requirements

Depending on the handler you will use, it may need PHP extensions.

  • Redis
  • PDO
  • Wincache
  • Memcache or Memcached

Installation

composer require initphp/cache

Usage

require_once "../vendor/autoload.php";
use \InitPHP\Cache\Cache;

$cache = Cache::create(\InitPHP\Cache\Handler\File::class, [
    'path'      => __DIR__ . '/Cache/';
]);

if(($posts = $cache->get('posts', null)) === null){
    $posts = [
        ['id' => '12', 'title' => 'Post 12 Title', 'content' => 'Post 12 Content'],
        ['id' => '15', 'title' => 'Post 15 Title', 'content' => 'Post 15 Content'],
        ['id' => '18', 'title' => 'Post 18 Title', 'content' => 'Post 18 Content']
    ];
    $cache->set('posts', $posts, 120);
}

echo '<pre>'; print_r($posts) echo '</pre>';

Configuration and Options

\InitPHP\Cache\Handler\File::class

$options = [
    'prefix'    => 'cache_',
    'mode'      => 0640,
];

\InitPHP\Cache\Handler\Memcache::class

$options = [
    'prefix'    => 'cache_',
    'host'          => '127.0.0.1',
    'port'          => 11211,
    'weight'        => 1,
    'raw'           => false,
    'default_ttl'   => 60,
];

\InitPHP\Cache\Handler\PDO::class

$options = [
    'prefix'    => 'cache_',
    'dsn'           => 'mysql:host=localhost;dbname=test',
    'username'      => null,
    'password'      => null,
    'charset'       => 'utf8mb4',
    'collation'     => 'utf8mb4_general_ci',
    'table'         => 'cache'
];

Below is a sample cache table creation query for MySQL.

CREATE TABLE `cache` (
    `name` VARCHAR(255) NOT NULL,
    `ttl` INT(11) NULL DEFAULT NULL,
    `data` TEXT NOT NULL,
    UNIQUE  (`name`)
) ENGINE = InnoDB CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;

\InitPHP\Cache\Handler\Redis::class

$options = [
    'prefix'    => 'cache_',
    'host'      => '127.0.0.1',
    'password'  => null,
    'port'      => 6379,
    'timeout'   => 0,
    'database'  => 0
];

\InitPHP\Cache\Handler\Wincache::class

$options = [
    'prefix'    => 'cache_', // Cache Name Prefix
    'default_ttl'   => 60, // Used if ttl is NULL or not specified.
];

Credits

License

Copyright © 2022 MIT License