JeuWeb - Crée ton jeu par navigateur
[POO] Utiliser la ram pour stocker des données volatiles. - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [POO] Utiliser la ram pour stocker des données volatiles. (/showthread.php?tid=2489)



[POO] Utiliser la ram pour stocker des données volatiles. - Studio Gamboo - 26-02-2008

Bonjour à tous,
Voici un petit tuto pour vous présenter un système de cache bien utile que j'utilise notamment sur 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 :
<?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 Smile

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