Utiliser l’extension PECL Memcached pour stocker vos donnees de session

memcached

La gestion des sessions dans une application web est une tache critique, spécialement quand vous voulez réduire vos entrées/sorties et aussi de décharger la base de données si vous écrivez un gestionnaire de sessions personnalisé (session handler). Aussi, si votre application utilise plusieurs serveurs web, la tache de partager et des gérer les données de session devient un vrai casse tête. Ceci montre l’importance d’un gestionnaire  central de sessions pour que votre application tienne la charge.

Pour palier a ces problèmes, vous pouvez utiliser Memcached a l’aide de l’extension Memcached développée par  Andrei Zmievski et son equipe. Ceci vous permettra d’isoler le stockage des données de session par rapport aux serveurs web.

1. Installer le serveur Memcached

Sur une distribution debian/ubuntu :

apt-get install memcached

2. Démarrer les instances memcached

Nous allons démarrer deux instances sur la même machine. Cet article est une simple démonstration. Dans un environnement de production, vous pouvez déployer plusieurs instances sur plusieurs serveurs dans le même réseau.

memcached -d -l 127.0.0.1 -p 11211 -u  -m 16
memcached -d -l 127.0.0.1 -p 11212 -u  -m 16

Les deux commandes précédentes vont démarrer deux instances de memcached écoutant sur les ports 11211 et 11212, sur la même machine IP 127.0.0.1. Chacune d’elles va avoir une allocation de 16 Mo de mémoire.

3. Installer l’extension PECL memcached

Nous allons procéder a l’installation de l’extension memcached de PECL. Cette nouvelle extension dépend de la librairie libmemcached que vous pouvez télécharger de  https://launchpad.net/libmemcached et compiler sur votre machine. Assurez vous que les dépendances sont satisfaites.

wget http://launchpad.net/libmemcached/1.0/0.34/+download/libmemcached-0.34.tar.gz
tar -zxvf libmemcached-0.34.tar.gz
cd libmemcached-0.34
./configure
make && sudo make install

Ceci installe libmemcached, installons maintenant l’extension a l’aide de la commande pecl install :

pecl install memcached

Si tout va bien, le resultat sera comme suit :

Build process completed successfully
Installing '/usr/lib/php5/20060613/memcached.so'
install ok: channel://pecl.php.net/memcached-1.0.0
configuration option "php_ini" is not set to php.ini location
You should add "extension=memcached.so" to php.ini

Assurez vous que memcached.so existe dans votre répertoire extension_dir (ici /usr/lib/php5/20060613). Ajouter la ligne “extension=memcached.so” dans votre php.ini et redémarrez le serveur.
Pour vous assurer que tout est bien installée, vérifiez que votre phpinfo() vous fournit bien une section memcached avec les paramètres version, libmemcached version, session_support et lgbin support.
Il nous faut maintenant faire des changements dans le fichier php.ini pour enregistrer Memcached comme étant le gestionnaire de session :

session.save_handler=memcached
session.save_path="127.0.0.1:11211, 127.0.0.1:11212"

Redémarrez votre serveur, et le tour est joué! Vos donnes de session sont enregistrées et servis depuis les serveurs memcached, vous n’aurez plus de problèmes puisque vous pouvez étendre votre installation en ajoutant d’autres serveurs memcached.

Anis Berejeb

Anis est avant tout un passioné de l'agilité et du développement. Avec plus de 15 ans dans le domaine du développement web, son expertise combine des connaissances accrues dans l'ensemble des notions partant du développement logiciel jusqu'à l'organisation des équipes dans les environnements agiles à grande échelle.

You may also like...