Vous êtes ici : Accueil / Debian GNU/Linux / Serveurs / PHP / Gérer les sessions PHP avec Memcached

Gérer les sessions PHP avec Memcached

Par Pierre-Yves Landuré Dernière modification 11/11/2017 10:31

Par défaut, les sessions PHP sont stockées sur le système de fichier (dans /var/lib/php5, ou dans /tmp). Si les sites Internet hébergés font une utilisation intensive des sessions, cela entraîne un délai supplémentaire dans l'exécution des requêtes PHP. Il est possible d'optimiser les performances en stockant les sessions en mémoire à l'aide de Memcached. Ce guide décrit la mise en place de ce système.

Ce guide est testé sur:

  • Debian 6.0 Squeeze

Prérequis

Ce guide nécessite:

Avantages et Inconvénients

Inconvénients

L'utilisation de Memcached pour stocker les sessions impose les limitations suivantes:

  • Les sessions stockées ne peuvent dépasser une taille de 1 Mo.
  • Les sessions ne sont pas persistantes, et un redémarrage du démon Memcached les supprime.
  • Il est impossible de contrôler la durée des sessions.
  • Le nombre de sessions gérées est limitées par la taille du cache Memcached.

N'utilisez pas Memcached pour gérer les sessions PHP si celles-ci doivent contenir des informations critiques (dans le cas d'un site E-commerce par exemple).

Avantages

Utiliser Memcached pour stocker les sessions apporte les avantages suivants:

  • L'accès aux données de session est Très rapide, car elle sont stockées en mémoire.
  • Il n'y a pas à gérer un mécanisme de suppression des sessions périmées, Memcached s'en charge.
  • Dans les limites de la mémoire assignée à Memcached, le système peut gérer facilement plusieurs dizaines de milliers de connexions simultanées.

Paramètres

Renseignez l'adresse IP du serveur Memcached:

MEMCACHED_IP="127.0.0.1"

Renseignez le port du serveur Memcached:

MEMCACHED_PORT="11211"

Installation

Installez le module PHP5 pour Memcache:

command apt-get install php5-memcached

Remarque: De nombreux guides disponibles sur Internet utilisent php5-memcache plutôt que php5-memcached. php5-memcached est recommandé, car plus récent et disposant de plus de fonctionnalités.

Configurez PHP5 pour stocker les sessions dans le serveur Memcached:

command echo "; Storing session in memcached server.
session.save_handler = memcached
session.save_path=\"${MEMCACHED_IP}:${MEMCACHED_PORT}\"" \
> '/etc/php5/conf.d/sessions-store-memcached.ini'

Rechargez la configuration de PHP selon la méthode d'installation utilisée:

test -x /etc/init.d/php5-fpm && /etc/init.d/php5-fpm force-reload
test -x /etc/init.d/apache2 && /etc/init.d/apache2 force-reload
test -x /etc/init.d/lighttpd && /etc/init.d/lighttpd force-reload
test -x /etc/init.d/nginx && /etc/init.d/nginx force-reload

Remerciements