02-26-2008, 04:27 PM
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
Voila merci de m'avoir suivi,
Je suis dispo pour tout question (bien que ça soit assez simple)
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 :
Code PHP :
<?php
<?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 :
Code PHP :
$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
Voila merci de m'avoir suivi,
Je suis dispo pour tout question (bien que ça soit assez simple)