Le module Memcache fournit une interface procédurale maniable ainsi qu'orientée objet à Memcache , un démon fortement efficace dans la gestion du cache, qui est principalement destiné à faire baisser la charge des bases de données dans les applications web dynamiques.
Plus d'informations concernant Memcache peuvent être consultées sur » http://www.danga.com/memcached/ .
Ce module utilise les fonctions de la bibliothèque » zlib pour supporter la compression des données à la volée. Zlib est donc requis pour installer ce module.
PHP 4.3.3 ou supérieur est requis pour utiliser l'extension Memcache .
Cette extension » PECL n'est pas intégrée à PHP. Des informations sur l'installation de ces extensions PECL peuvent être trouvées dans le chapitre du manuel intitulé Installation des extensions PECL . D'autres informations comme les notes sur les nouvelles versions, les téléchargements, les sources des fichiers, les informations concernant les mainteneurs ainsi qu'un CHANGELOG, peuvent être trouvées ici : » http://pecl.php.net/package/memcache .
Pour utiliser ces fonctions, vous devez compiler PHP avec le support MemCache en utilisant l'option de compilation --enable-memcache[=DIR] . Vous pouvez, optionnellement, désactiver le support du gestionnaire de session memcache en spécifiant l'option de compilation --disable-memcache-session .
Les utilisateurs de Windows doivent activer la bibliothèque php_memcache.dll dans le php.ini pour pouvoir utiliser ces fonctions. La bibliothèque DLL pour cette extension PECL peut être téléchargée depuis, soit la page de » téléchargement PHP , soit depuis » http://pecl4win.php.net/
Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini .
Tableau 168. Options de configuration Memcache
Nom | Défaut | Modifiable | Changelog |
---|---|---|---|
Voici un éclaircissement sur l'utilisation des directives de configuration.
Si l'on doit basculer sur d'autres serveurs en cas d'erreur.
Définit combien de serveurs à essayer lorsque l'on fixe ou récupère des données. Utilisez seulement en conjonction avec memcache.allow_failover.
Les données doivent être transférées en morceaux de cette taille ; Configurer cette valeur à une petite valeur provoque plus d'écritures sur le réseau. Essayez d'augmenter cette valeur à 32768 si vous rencontrez des ralentissements inexplicables.
Le numéro du port TCP par défaut à utiliser lors de la connexion au serveur memcache si aucun autre port n'est spécifié.
Utilisez memcache comme gestionnaire de session en définissant cette valeur à memcache .
Définit les URLs serveur, séparées par une virgule, à utiliser pour le stockage des sessions, par exemple : "tcp://host1:11211, tcp://host2:11211" .
Chaque URL peut contenir des paramètres qui seront appliqués au serveur, de la même façon que pour la méthode Memcache::addServer() . Par exemple : "tcp://host1:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
Il n'y a qu'une seule ressource utilisée par le module Memcache : c'est le lien identifiant représentant la connexion du serveur de cache.
Tableau 169. Constantes MemCache
Nom | Description |
---|---|
Exemple 1455. Exemple avec l'extension Memcache
<?php
$memcache
= new
Memcache
;
$memcache
->
connect
(
'localhost'
,
11211
) or die (
"Connexion impossible"
);
$version
=
$memcache
->
getVersion
();
echo
"Version du serveur : "
.
$version
.
"<br />\n"
;
$tmp_object
= new
stdClass
;
$tmp_object
->
str_attr
=
'test'
;
$tmp_object
->
int_attr
=
123
;
$memcache
->
set
(
'key'
,
$tmp_object
,
false
,
10
) or die (
"Echec de la sauvegarde des données sur le serveur"
);
echo
"Les données ont été stockées dans le cache (les données expireront dans 10 secondes)<br />\n"
;
$get_result
=
$memcache
->
get
(
'key'
);
echo
"Données depuis le cache :<br />\n"
;
var_dump
(
$get_result
);
?>
Dans l'exemple ci-dessus, un objet est sauvegardé dans le cache et ensuite, affiché. Les objets ainsi que les autres types non-scalaires sont linéarisés avant d'être sauvegardé ; il est donc impossible d'y stocker des ressources (i.e. identifiant de connexion et autres) dans le cache.