1. Go to this page and download the library: Download noizu-labs/fragmented-keys library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
noizu-labs / fragmented-keys example snippets
$GlobalGreetingTag = new Tag\Standard("Global.Greeting", "global");
$UserUserNameTag = new Tag\Standard("User.Username", $userId);
$keyobj = new Key\Standard(
"CacheDataThatInvalidatesWhenUserNamesAreChanged",
array($UserUserNameTag, $GlobalGreetingTag)
);
$cacheKey = $keyObj->getKeyStr();
$UserUserNameTag = new Tag\Standard("User.Username", $userId);
$UserUserNameTag->Increment();
$GlobalGreetingTag->Increment();
$m = new \Memcached;
\NoizuLabs\FragmentedKeys\Configuration\setGlobalCacheHandler(new \NoizuLabs\FragmentedKeys\CacheHandler\Memcached($m));
\NoizuLabs\FragmentedKeys\Configuration\setGlobalPrefix("MyApp");
//you may override the handler per tag by calling
$tag->setCacheHandler($alternativeHandler);
//or by including a handler in you constructor.
$tag = new Tag\Standard("Users", 1234, null, CacheHandler\Apc());
//=================================================
// Config stuff you only need to do this once
//=================================================
/* Somewhere in you bootstrap or wherever you instiatiate a KeyRing or KeyRing derived Class */
$cacheHandlers = array(
'memcache' => new \NoizuLabs\FragmentedKeys\CacheHandler\Memcached($this->container['memcache']),
'memory' => new \NoizuLabs\FragmentedKeys\CacheHandler\Memory()
);
$globalOptions = array(
'type' => 'standard'
);
$tagOptions = array(
'universe' => array('type' => 'constant', 'version' => 5)
);
$ring = new FragmentedKeys\KeyRing($globalOptions, $tagOptions, 'memcache', $cacheHandlers);
/* define you keys */
$ring->DefineKey("Users", array('universe', array('tag' => 'planet' , 'cacheHandler' => 'memory', 'version' => null, 'type'=>'standard'), 'city'));
//==============================================
// Need to check for some cached data? Generating you key now takes one line instead of 5;
//===============================================
$users = $ring->getUsersKeyObj('MilkyWay', 'Earth', 'Chicago')->getKeyStr();
$users = $memcache->get($userKey);
if(!users) {
$users = query("select * from users where universe='MilkyWay' AND planet='Earth' AND 'city' => 'Chicago'");
$memcache->set($userKey, $users);
}
/* Invalidate them */
$universeTag = new Tag\Standard('universe', 'MilkyWay');
$universeTag->increment();
//===============================
// Old Method
//===============================
$universeTag = new Tag\Constant("universe", "MilkyWay",5);
$worldTag = new Tag\Standard("planet", "Earth");
$cityTag = new Tag\Standard("city", "Chicago", null, new FragmentedKeys\CacheHandler\Memory());
$key = new Key\Standard("Users", array($universeTag, $worldTag, $cityTag);
$userKey = $key->getKeyStr();
$users = $memcache->get($userKey);
if(!users) {
$users = query("select * from users where universe='MilkyWay' AND planet='Earth' AND 'city' => 'Chicago'");
$memcache->set($userKey, $users);
}
/* Invalidate them */
$universeTag->increment();
class MyGames extends NoizuLabs\FragmentedKeys\KeyRing {
public getGameDescriptionKeyObj($gameId) {
/* Define Key in the usual manner */
/* . . . */
$gameSiteId = $this->pimpleContainer['gameSite'];
$userId = $this->getUserId();
return $this->getKeyObj("GameDescription", array( $gameId, $gameSiteId, $userId, ... etc.));
}
}
// Now your cache code looks simple
$gameDescCacheKey = $ring->getGameDescriptionKeyObj($gameId)->getKeyStr();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.