[POO] Utiliser la ram pour stocker des données volatiles

[POO] Utiliser la ram pour stocker des données volatiles

Aide concernant ce tuto

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 (http://www.studio-gamboo.com)

 
tutoprog/ram_et_donnee_volatiles.txt · Dernière modification: 2011/04/03 14:06 (édition externe)