Utiliser l’extension PECL Memcached pour stocker vos donnees de session
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.