msgbartop
De tout et de rien
msgbarbottom

11 Fév 09 Memcached Backend avec plusieurs installations WordPress

Pour utiliser Memcached avec WordPress, vous devez  installer le Memcached Backend.
Si ce n’est pas encore fait,  installez le serveur Memcached et  son client PHP.

Memcached Backend marche très bien à condition de n’avoir qu’un seul blog, qu’une installation de WordPress.

Si ce n’est pas le cas, c’est la cata. Il va utiliser les mêmes clefs pour stocker/cacher les données de tous les blogs. En gros, si vous avez le blog A, B et que vous essayez d’accéder au blog B vous verrez les données (posts, commentaires, etc..) du blog A. Vous imaginez le boxon !  Et bien moi j’ai testé 😀

Memcached pour stocker des données utilise une clef qui doit être unique. A chaque clef correspond une valeur. La clef est comme votre nom de variable dans votre code PHP.

J’ai donc regardé le code du fichier object-cache.php et je l’ai modifié. Après un essai infructueux, je pense que la modif est bonne. Je n’ai pas encore vu de bug 🙂

Pour rendre object-cache.php compatible avec plusieurs installations WordPress, il suffit de replacer le code de la  function key($key, $group) du fichier object-cache.php  par ce code :


function key($key, $group) {
global $blog_id;
if ( empty($group) )
$group = 'default';
// C'est ici que vous devez mettre l'identifiant unique de votre blog, par exemple son adresse
// Chaque blog doit avoir un prefix key différent, ici j'ai mis blog.koreus.com
$prefix = 'blog.koreus.com' . ':';
return preg_replace('/\s+/', '', "$prefix$group:$key");
}

Le fichier object-cache.php modifié doit ensuite être copié dans le répertoire wp-content de votre blog.

Ce n’est pas une solution super propre mais elle marche (en tout cas elle a l’air).

Avertissement 

  •  Cette modif ne doit pas être utilisée sur une installation WordPress MU
  • Attention à ne pas mettre de prefix trop long. Car la longeur total de la clef (prefix+tout le reste) ne doit pas dépasser 250 caractères

Reader's Comments

  1.    

    Merci, est c’au juste de ce que j’ai eu besoin.