SlideShare une entreprise Scribd logo
Memcached Cache server Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
Sommaire •  Introduction aux systèmes de cache (En general) • Présentation du serveur Memcached • Installation et configuration de Memcache • Présentation de la lib Memcached pour PHP • Atelier 1 : Implémentation de Memcached avec une application PHP • Atelier 2 : Implémentation de Memcached avec plusieurs applications hétérogènes (PHP, JAVA, C) • Atelier 3 : Partager les sessions PHP avec Memcached pour faire du clustering  Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
Introduction aux systèmes de cache Le cache système :  Ce système de cache  n'est pas lié à votre application web , ce dernier,  se place en amont de votre application , au niveau de votre serveur web. Ce système est placé comme une couche au dessus de votre serveur web, il est chargé  d’intercepter les requêtes des clients et de vérifier si le contenu de cette requête n’est pas placé déjà en cache , si cela est le cas, le résultat est directement renvoyé au client sans solliciter le serveur web, ni même notre application web. Par contre, si le résultat de la requête n'est pas disponible dans le cache, la requête est alors renvoyée au serveur web qui transmettra le résultat et l’envoie au client, et par la même occasion sauvegarde le résultat dans son cache. Cette solution a comme énorme avantage, de  ne pas avoir à modifier notre code , et ainsi bénéficier d’une très grande facilité d’intégration. Le résultat est souvent spectaculaire quand cette solution est bien configurée. Cependant, elle  ne convient pas à tout le monde , elle  n'est pas accessible en hébergement mutualisé , car cela nécessite une intervention directe sur l’architecture web du serveur. Exemple : •  Squid  et  Zend plateforme Le cache opcode :  Avant qu’un script PHP soit exécuté,  il doit être analysé  et converti en une série d’instructions appelée opcode, ce dernier est  interprété par le moteur PHP  qui est le Zend Engine. Donc à chaque fois qu’un code PHP doit être exécuté, il doit être analysé, transformé en opcode en suite interprété. Et comme un script change rarement entre deux exécutions, il est intéressant de  ne plus générer l’opcode et passer directement à l’interprétation , et ainsi sauter une étape. Le cache opcode mémorise l’opcode généré par PHP en mémoire ou sur disque. Ainsi, à chaque nouvelle exécution de votre script, on économise la coûteuse transformation du script en opcode. Pour implémenter ce type de cache, il faut modifier votre configuration de PHP. Exemples :  Zend Accelerator  et APC  Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
Le cache du contenu :  Ce type de cache est étroitement lié à votre application PHP, et vous devez faire certaines modifications sur votre code. Ce dernier consiste à mettre en cache une page php dans un fichier plat (Texte) sur le disque. Nous pouvons décider de la page à mettre en cache via les URL, et la vie de la mise en cache de cette dernière. Exemples :  jpcache  et  PEAR/Cache  Le cache en mémoire :  Le cache en mémoire, est certainement la solution la plus prisée et la plus efficace. Ca consiste à mettre en cache vos variables (String, Numérique, Tableaux, Object) en mémoire, et les faire partager avec votre cache soit par la même application ou même a plusieurs applications, que se soit une application web ou autre.  Le principal avantage de la mise en cache en mémoire, est la rapidité d’accès à votre cache, car il est plus rapide d’accéder à la mémoire qu’au disque. Cependant, il faut être prudent avec la mise en cache, car si vous ne disposez pas de beaucoup de mémoire et si vous stockez une quantité importante en mémoire, vous risquez de planter votre serveur. Une bonne gestion de la mise en cache est nécessaire. Un autre inconvénient, c’est que vous perdez votre cache si le serveur reboote. Introduction aux systèmes de cache Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
Installation et configuration de Memcache Installation sous Windows :  Télécharger :  http://jehiah.cz/projects/memcached-win32/   Décompressez les fichiers binaires dans le répertoire de votre choix (ex: c: \ memcached) Installez le service en utilisant la commande:  'c:\memcached\memcached.exe -d install' à partir de la ligne de commande  Démarrez le service avec la commande suivante: "c:\memcached\memcached.exe -d start'  4. Utilisez le serveur écoute sur le port 11211 par défaut   5. Utilisez 'memcached.exe -h'  pour une aide supplémentaire de la ligne de commande et de serveur. Exemple  memcached.exe -m 100   fixer a 100 mo la mémoire de Memcache. Configuration de PHP : Télécharger l’extension :  http://www.pureformsolutions.com/pureform.wordpress.com/2008/06/17/php_memcache.dll  et sauvez le dans le répertoire des extensions de php. Configurez PHP.INI: ajoutez extension=php_memcache.dll Vérifier : phpinfo() Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
Installation et configuration de Memcache Installation sous Linux :  Installation :  yum install memcached  ou   rpm -Uvh memcached-xxx.rpm   Configuration :  Les options sont enregistrées dans le fichier  /etc/sysconfig/memcached Activation :  chkconfig memcached on service memcached start   Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
Librairie Memcache  pour  PHP  http://www.php.net/manual/en/book.memcache.php   Memcache::connect  :  $memcache = new Memcache; $memcache->connect('memcache_host', 11211);   Memcache::set  :  $memcache->set("str_key", "String to store in memcached"); $memcache->set("num_key", 123); $object = new StdClass; $object->attribute = 'test'; $memcache->set("obj_key", $object); $array = Array('assoc'=>123, 345, 567); $memcache->set("arr_key", $array); Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
Librairie Memcache  pour  PHP  Memcache::get   $var = $memcache->get(‘str_key');   Memcache::delete  /* après 10 secondes, l'élément sera effacé par le serveur de  $memcache->delete('key_to_delete', 10);  Memcache::flush   $memcache->flush();  Memcache::close   $memcache->close();  Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
Exemple <?php $memcache = memcache_connect('localhost', 11211,2); if ($memcache) { $memcache->set(&quot;str_key&quot;, &quot;String to store in memcached&quot;); $memcache->set(&quot;num_key&quot;, 123); $object = new StdClass; $object->attribute = 'test'; $memcache->set(&quot;obj_key&quot;, $object); $array = Array('assoc'=>123, 345, 567); $memcache->set(&quot;arr_key&quot;, $array); echo&quot;<pre>&quot;; var_dump($memcache->get('str_key')); var_dump($memcache->get('num_key')); var_dump($memcache->get('obj_key')); echo&quot;</pre>&quot;; $memcache->set('var_key666', 'quelques grosses variables', MEMCACHE_COMPRESSED, 50); echo $memcache->get('var_key'); } else { echo &quot;Connection to memcached failed&quot;; } ?> Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
Les session sous Memcached Configuration : Les options sont prévues (commentées) dans le fichier /etc/php.d/memcache.ini. Il suffit de les décommenter et de les adapter : ; Use memcache as a session handler session.save_handler=memcache ; Defines a comma separated of server urls to use for session storage  session.save_path=&quot;tcp://localhost:11211?persistent=1&weight=1&timeout=1&retry_interval=15&quot;   Tester une page web qui fait appel aux sessions, cela devrait fonctionner et le répertoire /var/lib/php/session  rester vide.  Présentation de Mehdi Mehni : mehdi.mehni@gmail.com

Contenu connexe

PDF
Memcached: Comprendre pour mieux utiliser
PDF
Examen
PDF
Cours 2/3 - Architecture Web
ODP
08 01 mise en place d'un serveur web
PDF
Optimiser WordPress
PDF
Optimiser wordpress
PPTX
Serveurs
ODP
08 02 mise en place de serveurs virtuels apache 2
Memcached: Comprendre pour mieux utiliser
Examen
Cours 2/3 - Architecture Web
08 01 mise en place d'un serveur web
Optimiser WordPress
Optimiser wordpress
Serveurs
08 02 mise en place de serveurs virtuels apache 2

Tendances (14)

PPT
Serveur Web (1)
PDF
PHP et Performances - AFUP 2005
PDF
[FR] Les requêtes HTTP de l'extrême
PDF
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
PDF
Meetup Drupal Lyon - Sécuriser un site drupal
PDF
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
PPT
PostgreSQL sous linux
PDF
PPTX
WebSocket avec Java EE 7
PPTX
Amélioration des performances eCommerce - Webinaire par aYaline
PPTX
Automatisez votre gestion de MongoDB avec MMS
PDF
Geek Time Juin 2016 : Node.js
PPT
APACHE HTTP
PDF
Un site web rapide ?
Serveur Web (1)
PHP et Performances - AFUP 2005
[FR] Les requêtes HTTP de l'extrême
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
Meetup Drupal Lyon - Sécuriser un site drupal
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
PostgreSQL sous linux
WebSocket avec Java EE 7
Amélioration des performances eCommerce - Webinaire par aYaline
Automatisez votre gestion de MongoDB avec MMS
Geek Time Juin 2016 : Node.js
APACHE HTTP
Un site web rapide ?
Publicité

En vedette (20)

PDF
Memcache - Lightning fast object retrieval
PPT
Memcache
PDF
Memcached and the Rise of the Dynamic Web
PDF
Intro To Sap Netweaver Java
PDF
Implementing High Availability Caching with Memcached
KEY
Introduction to memcached
PDF
Rapport parlementaire RSI 21 09 2015
PPT
Podcasting en Venezuela
PPTX
Exel habilidad
PPTX
المجوهرات الامازيغية
PPTX
Examen proximedia
KEY
Présentation parents jv
PPT
PDF
Aide CAE - Pôle Emploi - Embauches à compter du 25 mars 2015
PDF
Java Efficace
PPTX
Itinerario por Córdoba cristiana e
PDF
Àlex B i Mariano
PDF
Webinar: 7 problemas del Email Marketing y sus soluciones
PDF
Spanje
PPTX
Caso finalizado
Memcache - Lightning fast object retrieval
Memcache
Memcached and the Rise of the Dynamic Web
Intro To Sap Netweaver Java
Implementing High Availability Caching with Memcached
Introduction to memcached
Rapport parlementaire RSI 21 09 2015
Podcasting en Venezuela
Exel habilidad
المجوهرات الامازيغية
Examen proximedia
Présentation parents jv
Aide CAE - Pôle Emploi - Embauches à compter du 25 mars 2015
Java Efficace
Itinerario por Córdoba cristiana e
Àlex B i Mariano
Webinar: 7 problemas del Email Marketing y sus soluciones
Spanje
Caso finalizado
Publicité

Similaire à Memcached, une solution de cache par excellence (20)

PPTX
Développer et déployer une application php maintenable
PDF
Performance des sites dynamiques : une histoire de cache à tous les niveaux
PDF
Breizhcamp 2014 : Une partie de Cache-Cache
ODP
Drupagora 2012 Optimisation performances Drupal
PDF
Ecrire et déployer une appli PHP maintenable
PPTX
PHP : écrire et déployer des applications maintenables !
ODP
Etes vous prêts pour le succes ?
PDF
PPTX
PPTX
Php sous Windows - webcamps Paris
PDF
Configuration des services web sous centOS 5
PDF
La mémoire et PHP
PDF
Les performances sur des développements PhP
PPTX
Conférence PHP Framework - IT Network Group
PDF
PHP/ExtJs experience feedback - IAV case - 1
PPT
201211 drupagora hostingdrupal
PPT
Serveur Web (2)
PPT
KEY
Techdays 2010 : comment hacker PHP sans se fatiguer
KEY
Rmll.securite
Développer et déployer une application php maintenable
Performance des sites dynamiques : une histoire de cache à tous les niveaux
Breizhcamp 2014 : Une partie de Cache-Cache
Drupagora 2012 Optimisation performances Drupal
Ecrire et déployer une appli PHP maintenable
PHP : écrire et déployer des applications maintenables !
Etes vous prêts pour le succes ?
Php sous Windows - webcamps Paris
Configuration des services web sous centOS 5
La mémoire et PHP
Les performances sur des développements PhP
Conférence PHP Framework - IT Network Group
PHP/ExtJs experience feedback - IAV case - 1
201211 drupagora hostingdrupal
Serveur Web (2)
Techdays 2010 : comment hacker PHP sans se fatiguer
Rmll.securite

Memcached, une solution de cache par excellence

  • 1. Memcached Cache server Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
  • 2. Sommaire • Introduction aux systèmes de cache (En general) • Présentation du serveur Memcached • Installation et configuration de Memcache • Présentation de la lib Memcached pour PHP • Atelier 1 : Implémentation de Memcached avec une application PHP • Atelier 2 : Implémentation de Memcached avec plusieurs applications hétérogènes (PHP, JAVA, C) • Atelier 3 : Partager les sessions PHP avec Memcached pour faire du clustering Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
  • 3. Introduction aux systèmes de cache Le cache système : Ce système de cache n'est pas lié à votre application web , ce dernier, se place en amont de votre application , au niveau de votre serveur web. Ce système est placé comme une couche au dessus de votre serveur web, il est chargé d’intercepter les requêtes des clients et de vérifier si le contenu de cette requête n’est pas placé déjà en cache , si cela est le cas, le résultat est directement renvoyé au client sans solliciter le serveur web, ni même notre application web. Par contre, si le résultat de la requête n'est pas disponible dans le cache, la requête est alors renvoyée au serveur web qui transmettra le résultat et l’envoie au client, et par la même occasion sauvegarde le résultat dans son cache. Cette solution a comme énorme avantage, de ne pas avoir à modifier notre code , et ainsi bénéficier d’une très grande facilité d’intégration. Le résultat est souvent spectaculaire quand cette solution est bien configurée. Cependant, elle ne convient pas à tout le monde , elle n'est pas accessible en hébergement mutualisé , car cela nécessite une intervention directe sur l’architecture web du serveur. Exemple : • Squid  et Zend plateforme Le cache opcode : Avant qu’un script PHP soit exécuté, il doit être analysé et converti en une série d’instructions appelée opcode, ce dernier est interprété par le moteur PHP qui est le Zend Engine. Donc à chaque fois qu’un code PHP doit être exécuté, il doit être analysé, transformé en opcode en suite interprété. Et comme un script change rarement entre deux exécutions, il est intéressant de ne plus générer l’opcode et passer directement à l’interprétation , et ainsi sauter une étape. Le cache opcode mémorise l’opcode généré par PHP en mémoire ou sur disque. Ainsi, à chaque nouvelle exécution de votre script, on économise la coûteuse transformation du script en opcode. Pour implémenter ce type de cache, il faut modifier votre configuration de PHP. Exemples : Zend Accelerator et APC Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
  • 4. Le cache du contenu : Ce type de cache est étroitement lié à votre application PHP, et vous devez faire certaines modifications sur votre code. Ce dernier consiste à mettre en cache une page php dans un fichier plat (Texte) sur le disque. Nous pouvons décider de la page à mettre en cache via les URL, et la vie de la mise en cache de cette dernière. Exemples : jpcache et PEAR/Cache Le cache en mémoire : Le cache en mémoire, est certainement la solution la plus prisée et la plus efficace. Ca consiste à mettre en cache vos variables (String, Numérique, Tableaux, Object) en mémoire, et les faire partager avec votre cache soit par la même application ou même a plusieurs applications, que se soit une application web ou autre. Le principal avantage de la mise en cache en mémoire, est la rapidité d’accès à votre cache, car il est plus rapide d’accéder à la mémoire qu’au disque. Cependant, il faut être prudent avec la mise en cache, car si vous ne disposez pas de beaucoup de mémoire et si vous stockez une quantité importante en mémoire, vous risquez de planter votre serveur. Une bonne gestion de la mise en cache est nécessaire. Un autre inconvénient, c’est que vous perdez votre cache si le serveur reboote. Introduction aux systèmes de cache Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
  • 5. Installation et configuration de Memcache Installation sous Windows : Télécharger : http://jehiah.cz/projects/memcached-win32/ Décompressez les fichiers binaires dans le répertoire de votre choix (ex: c: \ memcached) Installez le service en utilisant la commande:  'c:\memcached\memcached.exe -d install' à partir de la ligne de commande  Démarrez le service avec la commande suivante: &quot;c:\memcached\memcached.exe -d start'  4. Utilisez le serveur écoute sur le port 11211 par défaut   5. Utilisez 'memcached.exe -h'  pour une aide supplémentaire de la ligne de commande et de serveur. Exemple memcached.exe -m 100 fixer a 100 mo la mémoire de Memcache. Configuration de PHP : Télécharger l’extension : http://www.pureformsolutions.com/pureform.wordpress.com/2008/06/17/php_memcache.dll et sauvez le dans le répertoire des extensions de php. Configurez PHP.INI: ajoutez extension=php_memcache.dll Vérifier : phpinfo() Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
  • 6. Installation et configuration de Memcache Installation sous Linux : Installation : yum install memcached ou rpm -Uvh memcached-xxx.rpm Configuration : Les options sont enregistrées dans le fichier  /etc/sysconfig/memcached Activation : chkconfig memcached on service memcached start Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
  • 7. Librairie Memcache  pour  PHP http://www.php.net/manual/en/book.memcache.php Memcache::connect : $memcache = new Memcache; $memcache->connect('memcache_host', 11211); Memcache::set : $memcache->set(&quot;str_key&quot;, &quot;String to store in memcached&quot;); $memcache->set(&quot;num_key&quot;, 123); $object = new StdClass; $object->attribute = 'test'; $memcache->set(&quot;obj_key&quot;, $object); $array = Array('assoc'=>123, 345, 567); $memcache->set(&quot;arr_key&quot;, $array); Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
  • 8. Librairie Memcache  pour  PHP Memcache::get $var = $memcache->get(‘str_key'); Memcache::delete /* après 10 secondes, l'élément sera effacé par le serveur de  $memcache->delete('key_to_delete', 10); Memcache::flush $memcache->flush(); Memcache::close $memcache->close(); Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
  • 9. Exemple <?php $memcache = memcache_connect('localhost', 11211,2); if ($memcache) { $memcache->set(&quot;str_key&quot;, &quot;String to store in memcached&quot;); $memcache->set(&quot;num_key&quot;, 123); $object = new StdClass; $object->attribute = 'test'; $memcache->set(&quot;obj_key&quot;, $object); $array = Array('assoc'=>123, 345, 567); $memcache->set(&quot;arr_key&quot;, $array); echo&quot;<pre>&quot;; var_dump($memcache->get('str_key')); var_dump($memcache->get('num_key')); var_dump($memcache->get('obj_key')); echo&quot;</pre>&quot;; $memcache->set('var_key666', 'quelques grosses variables', MEMCACHE_COMPRESSED, 50); echo $memcache->get('var_key'); } else { echo &quot;Connection to memcached failed&quot;; } ?> Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
  • 10. Les session sous Memcached Configuration : Les options sont prévues (commentées) dans le fichier /etc/php.d/memcache.ini. Il suffit de les décommenter et de les adapter : ; Use memcache as a session handler session.save_handler=memcache ; Defines a comma separated of server urls to use for session storage session.save_path=&quot;tcp://localhost:11211?persistent=1&weight=1&timeout=1&retry_interval=15&quot; Tester une page web qui fait appel aux sessions, cela devrait fonctionner et le répertoire /var/lib/php/session rester vide. Présentation de Mehdi Mehni : mehdi.mehni@gmail.com