LXXXVI. Fonctions Memcache

Introduction

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/ .

Pré-requis

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 .

Installation

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/

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini .

Tableau 168. Options de configuration Memcache

memcache.allow_failover "1" PHP_INI_ALL Disponible depuis Memcache 2.0.2memcache.max_failover_attempts "20" PHP_INI_ALL Disponible depuis Memcache 2.1.0memcache.chunk_size "8192" PHP_INI_ALL Disponible depuis Memcache 2.0.2memcache.default_port "11211" PHP_INI_ALL Disponible depuis Memcache 2.0.2session.save_handler   PHP_INI_ALL Disponible depuis Memcache 2.1.2session.save_path   PHP_INI_ALL Disponible depuis Memcache 2.1.2
Nom Défaut Modifiable Changelog

Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à Annexe I, Directives du php.ini .

Voici un éclaircissement sur l'utilisation des directives de configuration.

memcache.allow_failover booléen

Si l'on doit basculer sur d'autres serveurs en cas d'erreur.

memcache.max_failover_attempts entier

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.

memcache.chunk_size entier

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.

memcache.default_port chaîne de caractères

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é.

session.save_handler chaîne de caractères

Utilisez memcache comme gestionnaire de session en définissant cette valeur à memcache .

session.save_path chaîne de caractères

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"

Types de ressources

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.

Constantes pré-définies

Tableau 169. Constantes MemCache

MEMCACHE_COMPRESSED (entier ) Utilisée pour activer à la volée la compression des données avec les fonctions Memcache::set() , Memcache::add() et Memcache::replace() .
Nom Description

Exemples

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.

Table des matières

Memcache::add — Ajout d'un élément au serveur
Memcache::addServer — Ajoute un serveur memcache à la liste de connexion
Memcache::close — Ferme la connexion avec le serveur Memcache
Memcache::connect — Ouvre une connexion avec le serveur Memcache
memcache_debug — Active ou non l'affichage des informations de débogage
Memcache::decrement — Décrémente la valeur d'un élément
Memcache::delete — Efface un élément du serveur de cache
Memcache::flush — Efface tous les éléments existant sur le serveur de cache
Memcache::get — Récupère un élément du serveur de cache
Memcache::getExtendedStats — Récupère des statistiques de tous les serveurs dans la liste
Memcache::getServerStatus — Retourne le statut du serveur
Memcache::getStats — Lit les statistiques du serveur
Memcache::getVersion — Retourne le numéro de version du serveur
Memcache::increment — Incrément la valeur d'un élément
Memcache::pconnect — Ouvre un connexion persistante à un serveur de cache
Memcache::replace — Remplace une valeur d'un élément existant
Memcache::set — Stocke des données dans le serveur de cache
Memcache::setCompressThreshold — Active la compression automatique des valeurs larges
Memcache::setServerParams — Modifit les paramètres et les statuts du serveur pendant l'exécution