Différences entre versions de « Php memcached »

De The Linux Craftsman
Aller à la navigation Aller à la recherche
(Page créée avec « =Introduction= Memcached est un système d'usage général servant à gérer la mémoire cache distribuée. Il est souvent utilisé pour augmenter la vitesse de réponse d... »)
 
 
(12 versions intermédiaires par le même utilisateur non affichées)
Ligne 4 : Ligne 4 :
 
Memcached a été initialement mis au point par Danga Interactive pour LiveJournal. En 2010, il est utilisé par d'autres sites, plusieurs très fréquentés, tels que YouTube, Reddit, Zynga, Facebook et Twitter.
 
Memcached a été initialement mis au point par Danga Interactive pour LiveJournal. En 2010, il est utilisé par d'autres sites, plusieurs très fréquentés, tels que YouTube, Reddit, Zynga, Facebook et Twitter.
  
[[ https://fr.wikipedia.org/wiki/Memcached | Wikipedia]]
+
[https://fr.wikipedia.org/wiki/Memcached Wikipedia]
 +
 
 +
On peut avoir besoin de ''Memcache'' lorsque l'on à besoin de se substituer à la base de données. En effet, il peut être intéressant de faire ce que l'on appel un [https://fr.wikipedia.org/wiki/Mock_%28programmation_orient%C3%A9e_objet%29 ''Mock''] qui implémente la même interface que le [https://fr.wikipedia.org/wiki/Objet_d'acc%C3%A8s_aux_donn%C3%A9es ''DAO''] mais qui stocke les objets en mémoire.
  
On peut avoir besoin de ''Memcache'' lorsque l'on à besoin de se substituer à la base de données. En effet, il peut être intéressant de faire ce que l'on appel un [[https://fr.wikipedia.org/wiki/Mock_%28programmation_orient%C3%A9e_objet%29 ''Mock'']] qui implémente la même interface que le [[https://fr.wikipedia.org/wiki/Objet_d'acc%C3%A8s_aux_donn%C3%A9es ''DAO'']] mais qui stocke les objets en mémoire.
 
 
=Installation=
 
=Installation=
 
Pour utiliser ''Memchache'', il faut l'installer sur un serveur et pour pouvoir l'utiliser il faut des librairies PHP. Vous pouvez tout faire sur la même machine, ou bien déporter le serveur sur une autre machine.
 
Pour utiliser ''Memchache'', il faut l'installer sur un serveur et pour pouvoir l'utiliser il faut des librairies PHP. Vous pouvez tout faire sur la même machine, ou bien déporter le serveur sur une autre machine.
 +
== Memcache ==
 +
<pre>
 +
# yum -y install memcached
 +
</pre>
 +
Il faut maintenant démarrer le serveur ''Memcache'' et l'enregistrer dans le chargeur de démarrage :
 +
* Pour SystemVInit:
 +
<pre>
 +
# service memcached start
 +
# chkconfig memcached on
 +
</pre>
 +
* Pour SystemD:
 +
<pre>
 +
# systemctl start memcached.service
 +
# systemctl enable memcached.service
 +
</pre>
 +
On vérifie le bon fonctionnement:
 +
<pre>
 +
# netstat -atnp | grep memcached
 +
tcp        0      0 0.0.0.0:11211              0.0.0.0:*                  LISTEN      1466/memcached
 +
tcp        0      0 :::11211                    :::*                        LISTEN      1466/memcached
 +
</pre>
 +
On n'oublie pas d'ouvrir le pare-feu:
 +
<pre>
 +
# iptables -I INPUT 2 -p tcp --dport 11211 -j ACCEPT
 +
# service iptables save
 +
</pre>
 +
 +
== Librairies PHP ==
 +
Pour les versions de PHP inférieurs à 7 :
 +
<pre>
 +
# yum -y install php-pecl-memcache
 +
</pre>
 +
Pour les versions de PHP supérieurs à 7 (ici 7.1) :
 +
<pre>
 +
# yum -y install php71w-pecl-memcached
 +
</pre>
  
 
=Utilisation=
 
=Utilisation=
 +
== Connexion ==
 +
Tout d'abord, il faut créer un objet ressource :
 +
* Php < 7 :
 +
<source lang="php" style="border:1px solid black;font-size:130%">
 +
$memcache = new Memcache();
 +
</source>
 +
* Php >= 7 :
 +
<source lang="php" style="border:1px solid black;font-size:130%">
 +
$memcache = new Memcached();
 +
</source>
 +
Il faut ensuite créer une connexion au serveur ''memcache'', dans cette exemple, le serveur possède l'adresse ''IP'' 192.168.100.110 :
 +
<source lang="php" style="border:1px solid black;font-size:130%">
 +
$memcache->addserver("192.168.100.110", 11211);
 +
</source>
 +
 +
== Getter / Setter ==
 +
On peut ensuite ajouter une variable identifiée grâce à une clé (''$key'') et une valeur (''$value'') :
 +
<source lang="php" style="border:1px solid black;font-size:130%">
 +
$key = "compteur";
 +
$value = "1";
 +
$memcache->set($key, $value);
 +
</source>
 +
On peut maintenant la récupérer grâce à sa ''key'':
 +
<source lang="php" style="border:1px solid black;font-size:130%">
 +
$memcache->get($key);
 +
</source>
 +
 +
== Incrément / décrément ==
 +
On peut utiliser, si la variable est un entier, une méthode qui permettra d'incrémenter ou de décrémenter directement sa valeur sans avoir à la récupérer :
 +
<source lang="php" style="border:1px solid black;font-size:130%">
 +
# incrémente de 1
 +
$memcache->increment($key);
 +
# incrémente de 2
 +
$memcache->increment($key, 2);
 +
# décrémente de 1
 +
$memcache->decrement($key);
 +
# décrémente de 2
 +
$memcache->decrement($key, 2);
 +
</source>

Version actuelle datée du 11 février 2018 à 19:05

Introduction

Memcached est un système d'usage général servant à gérer la mémoire cache distribuée. Il est souvent utilisé pour augmenter la vitesse de réponse des sites web créés à partir de bases de données. Il gère les données et les objets en RAM de façon à réduire le nombre de fois qu'une même donnée stockée dans un périphérique externe est lue. Il tourne sous Unix, Windows et MacOS et est distribué selon les termes d'une licence libre dite permissive1.

Memcached a été initialement mis au point par Danga Interactive pour LiveJournal. En 2010, il est utilisé par d'autres sites, plusieurs très fréquentés, tels que YouTube, Reddit, Zynga, Facebook et Twitter.

Wikipedia

On peut avoir besoin de Memcache lorsque l'on à besoin de se substituer à la base de données. En effet, il peut être intéressant de faire ce que l'on appel un Mock qui implémente la même interface que le DAO mais qui stocke les objets en mémoire.

Installation

Pour utiliser Memchache, il faut l'installer sur un serveur et pour pouvoir l'utiliser il faut des librairies PHP. Vous pouvez tout faire sur la même machine, ou bien déporter le serveur sur une autre machine.

Memcache

# yum -y install memcached

Il faut maintenant démarrer le serveur Memcache et l'enregistrer dans le chargeur de démarrage :

  • Pour SystemVInit:
# service memcached start
# chkconfig memcached on
  • Pour SystemD:
# systemctl start memcached.service
# systemctl enable memcached.service

On vérifie le bon fonctionnement:

# netstat -atnp | grep memcached
tcp        0      0 0.0.0.0:11211               0.0.0.0:*                   LISTEN      1466/memcached
tcp        0      0 :::11211                    :::*                        LISTEN      1466/memcached

On n'oublie pas d'ouvrir le pare-feu:

# iptables -I INPUT 2 -p tcp --dport 11211 -j ACCEPT
# service iptables save

Librairies PHP

Pour les versions de PHP inférieurs à 7 :

# yum -y install php-pecl-memcache

Pour les versions de PHP supérieurs à 7 (ici 7.1) :

# yum -y install php71w-pecl-memcached

Utilisation

Connexion

Tout d'abord, il faut créer un objet ressource :

  • Php < 7 :
$memcache = new Memcache();
  • Php >= 7 :
$memcache = new Memcached();

Il faut ensuite créer une connexion au serveur memcache, dans cette exemple, le serveur possède l'adresse IP 192.168.100.110 :

$memcache->addserver("192.168.100.110", 11211);

Getter / Setter

On peut ensuite ajouter une variable identifiée grâce à une clé ($key) et une valeur ($value) :

$key = "compteur";
$value = "1";
$memcache->set($key, $value);

On peut maintenant la récupérer grâce à sa key:

$memcache->get($key);

Incrément / décrément

On peut utiliser, si la variable est un entier, une méthode qui permettra d'incrémenter ou de décrémenter directement sa valeur sans avoir à la récupérer :

# incrémente de 1
$memcache->increment($key);
# incrémente de 2
$memcache->increment($key, 2);
# décrémente de 1
$memcache->decrement($key);
# décrémente de 2
$memcache->decrement($key, 2);