[POO] Utiliser la ram pour stocker des données volatiles
Bonjour à tous,
Voici un petit tuto pour vous présenter un système de cache bien utile que j'utilise notamment sur http://www.adelian.net
A quoi ça sert ?
Ça sert simplement à stocker des variables, que ce soit objet, tableau ou objets, dans la ram du serveur pendant un certains temps.
On peut comparer ça à un système de session, mais partagé.
Comment ça marche ?
Et bien d'abord il vous faut une classe pour s'interface avec le démon memcached. Si il n'est pas installé sur votre machin, un simple
apt-get install memcached php5-memcache suffit.
Voici la classe en question :
Une fois cette classe créer, vous utiliser le système comme ceci :
Quel intérêt ?
Cette classe peut être utile par exemple pour savoir en direct le nombre de gens en ligne (et d'autres détails) sans accèder à votre base de données, elle peut également mettre en cache vos requêtes sql, ou par exemple lister les gens en ligne à un endroit donné sur une carte.
Les possibilités sont énormes .
Composé par mdcarter
Bonjour à tous,
Voici un petit tuto pour vous présenter un système de cache bien utile que j'utilise notamment sur http://www.adelian.net
A quoi ça sert ?
Ça sert simplement à stocker des variables, que ce soit objet, tableau ou objets, dans la ram du serveur pendant un certains temps.
On peut comparer ça à un système de session, mais partagé.
Comment ça marche ?
Et bien d'abord il vous faut une classe pour s'interface avec le démon memcached. Si il n'est pas installé sur votre machin, un simple
apt-get install memcached php5-memcache suffit.
Voici la classe en question :
<?php
class Cache extends Memcache
{
private static $_cache;
public static $cache_server;
public static $cache_port;
// --------------------------------------------------------------
public function __construct() {
// --------------------------------------------------------------
self::$cache_server = "localhost":
self::$cache_port = "11211";
}
// --------------------------------------------------------------
public function __destruct() {
// --------------------------------------------------------------
if (!empty(self::$_cache)) self::$_cache->close();
}
// --------------------------------------------------------------
public function get($key) {
// --------------------------------------------------------------
return self::getConnexion()->get($key);
}
// --------------------------------------------------------------
public function set($key,$donnee,$delay=0) {
// --------------------------------------------------------------
return self::getConnexion()->set($key,$donnee,false,$delay);
}
// --------------------------------------------------------------
static function getConnexion()
// --------------------------------------------------------------
{
if (empty(self::$_cache))
{
self::$_cache = new Memcache();
self::$_cache->connect(self::$cache_server,self::$cache_port);
}
return self::$_cache;
}
}
?>
Une fois cette classe créer, vous utiliser le système comme ceci :
$oCache = Cache::getConnexion(); // récupération d'une instance de la classe
$array = array('toto','titi','tata'); // tableau d'exemple prêt à être mis en cache
$oCache->set('tableau',$array,0); // mise en cache du tableau avec comme clé "tableau" et comme durée 0 (infini)
// pour récuperer le tableau plus tard, rien de plus simple
$array = $oCache->get('tableau');
Quel intérêt ?
Cette classe peut être utile par exemple pour savoir en direct le nombre de gens en ligne (et d'autres détails) sans accèder à votre base de données, elle peut également mettre en cache vos requêtes sql, ou par exemple lister les gens en ligne à un endroit donné sur une carte.
Les possibilités sont énormes .
Composé par mdcarter