Poster une réponse  Créer un sujet 
1 Votes - 5 Moyenne   [POO] Utiliser la ram pour stocker des données volatiles.
Auteur Message
Studio Gamboo
Membre


Messages : 77
Groupe : Membre
Inscription : Jun 2007
Statut : Hors ligne
Réputation : 4
Message : #1
[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 :

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 2

Voila merci de m'avoir suivi,
Je suis dispo pour tout question (bien que ça soit assez simple)


http://www.studio-gamboo.com
http://www.adelian.net
02-26-2008 04:27 PM
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Poster une réponse  Créer un sujet 

Voir une version imprimable
Envoyer ce sujet à un ami
S'abonner au sujet | Ajouter le sujet aux favoris