voku / simple-cache
Simple Cache library
Fund package maintenance!
voku
Patreon
Tidelift
www.paypal.me/moelleken
Installs: 1 819 718
Dependents: 5
Suggesters: 1
Security: 0
Stars: 32
Watchers: 9
Forks: 11
Open Issues: 9
Requires
- php: >=7.0.0
- psr/simple-cache: ~1.0 || ~2.0
Requires (Dev)
- phpunit/phpunit: ~6.0 || ~7.0 || ~9.0
Suggests
- predis/predis: ~1.1
- symfony/var-exporter: ~3.0 || ~4.0 || ~5.0
Provides
- dev-master
- 4.1.0
- 4.0.5
- 4.0.4
- 4.0.3
- 4.0.1
- 4.0.0
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.1
- 3.1.0
- 3.0.2
- 3.0.1
- 3.0.0
- 2.4.0
- 2.3.5
- 2.3.4
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.0
- 2.1.1
- 2.1.0
- 2.0.13
- 2.0.12
- 2.0.11
- 2.0.10
- 2.0.9
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.6.1
- 1.0.6
- 1.0.5
- 1.0.4.1
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-renovate/phpunit-phpunit-11.x
- dev-renovate/psr-simple-cache-3.x
- dev-dependabot/add-v2-config-file
- dev-whitesource/configure
This package is auto-updated.
Last update: 2024-11-04 16:17:16 UTC
README
⚡ Simple Cache Class
This is a simple Cache Abstraction Layer for PHP >= 7.0 that provides a simple interaction with your cache-server. You can define the Adapter / Serializer in the "constructor" or the class will auto-detect you server-cache in this order:
- Memcached / Memcache
- Redis
- Xcache
- APC / APCu
- OpCache (via PHP-files)
- Static-PHP-Cache
Get "Simple Cache"
You can download it from here, or require it using composer.
{ "require": { "voku/simple-cache": "4.*" } }
Install via "composer require"
composer require voku/simple-cache
Quick Start
use voku\cache\Cache; require_once 'composer/autoload.php'; $cache = new Cache(); $ttl = 3600; // 60s * 60 = 1h $cache->setItem('foo', 'bar', $ttl); $bar = $cache->getItem('foo');
Usage
use voku\cache\Cache; $cache = new Cache(); if ($cache->getCacheIsReady() === true && $cache->existsItem('foo')) { return $cache->getItem('foo'); } else { $bar = someSpecialFunctionsWithAReturnValue(); $cache->setItem('foo', $bar); return $bar; }
If you have an heavy task e.g. a really-big-loop, then you can also use static-cache. But keep in mind, that this will be stored into PHP (it needs more memory).
use voku\cache\Cache; $cache = new Cache(); if ($cache->getCacheIsReady() === true && $cache->existsItem('foo')) { for ($i = 0; $i <= 100000; $i++) { echo $this->cache->getItem('foo', 3); // use also static-php-cache, when we hit the cache 3-times } return $cache->getItem('foo'); } else { $bar = someSpecialFunctionsWithAReturnValue(); $cache->setItem('foo', $bar); return $bar; }
PS: By default, the static cache is also used by >= 10 cache hits. But you can configure this behavior via $cache->setStaticCacheHitCounter(INT).
No-Cache for the admin or a specific ip-address
If you use the parameter "$checkForUser" (=== true) in the constructor, then the cache isn't used for the admin-session.
-> You can also overwrite the check for the user, if you add a global function named "checkForDev()".
Overwrite the auto-connection option
You can overwrite the cache auto-detect via "CacheAdapterAutoManager" and the "$cacheAdapterManagerForAutoConnect" option in the "Cache"-constructor. Additional you can also activate the "$cacheAdapterManagerForAutoConnectOverwrite" option in the "Cache"-constructor, so that you can implement your own cache auto-detect logic.
$cacheManager = new \voku\cache\CacheAdapterAutoManager(); // 1. check for "APCu" support first $cacheManager->addAdapter( \voku\cache\AdapterApcu::class ); // 2. check for "APC" support $cacheManager->addAdapter( \voku\cache\AdapterApcu::class ); // 3. try "OpCache"-Cache $cacheManager->addAdapter( \voku\cache\AdapterOpCache::class, static function () { $cacheDir = \realpath(\sys_get_temp_dir()) . '/simple_php_cache_opcache'; return $cacheDir; } ); // 4. try "File"-Cache $cacheManager->addAdapter( \voku\cache\AdapterFileSimple::class, static function () { $cacheDir = \realpath(\sys_get_temp_dir()) . '/simple_php_cache_file'; return $cacheDir; } ); // 5. use Memory Cache as final fallback $cacheManager->addAdapter( \voku\cache\AdapterArray::class ); $cache = new \voku\cache\CachePsr16( null, // use auto-detection null, // use auto-detection false, // do not check for usage true, // enable the cache false, // do not check for admin session false, // do not check for dev false, // do not check for admin session false, // do not check for server vs. client ip '', // do not use "_GET"-parameter for disabling $cacheManager, // new auto-detection logic true // overwrite the auto-detection logic );
Support
For support and donations please visit Github | Issues | PayPal | Patreon.
For status updates and release announcements please visit Releases | Twitter | Patreon.
For professional support please contact me.
Thanks
- Thanks to GitHub (Microsoft) for hosting the code and a good infrastructure including Issues-Managment, etc.
- Thanks to IntelliJ as they make the best IDEs for PHP and they gave me an open source license for PhpStorm!
- Thanks to Travis CI for being the most awesome, easiest continous integration tool out there!
- Thanks to StyleCI for the simple but powerfull code style check.
- Thanks to PHPStan && Psalm for relly great Static analysis tools and for discover bugs in the code!