(PECL mysqlnd_memcache >= 1.0.0)
mysqlnd_memcache_set — Associe une connexion MySQL avec une connexion Memcache
$mysql_connection
[, Memcached $memcache_connection
[, string $pattern
[, callback $callback
]]] )
Associe une connexion mysql_connection
avec une connexion
memcache_connection
en utilisant le paramètre
pattern
comme expression rationnelle PCRE, et le paramètre
callback
comme notification de rappel, ou pour réinitialiser
l'association de la connexion mysql_connection
.
Lors de l'association d'une connexion MySQL avec une connexion Memcache, cette fonction va interroger le serveur MySQL pour en connaître sa configuration. Elle va ainsi automatiquement détecter si le serveur est configuré pour utiliser le plugin InnoDB Memcache Daemon, ou le support MySQL Cluster NDB Memcache. Elle va également interroger le serveur afin d'identifier automatiquement les tables exportées, ainsi que d'autres options de configuration. Le résultat de cette configuration automatique peut être récupéré en utilisant la fonction mysqlnd_memcache_get_config().
mysql_connection
Un gestionnaire de serveur MySQL, en utilisant une des extensions API MySQL de PHP, qui sont PDO_MYSQL, mysqli ou ext/mysql.
memcache_connection
Une instance Memcached
avec une connexion au plugin MySQL Memcache Daemon. Si ce paramètre est omis,
alors mysql_connection
sera dé-associée de toute connexion memcache.
Et si une précédente association existait, alors elle sera remplacée.
pattern
Une expression rationnelle au format PCRE
pour identifier les requêtes potentielles Memcache. La requête doit avoir trois
sous-masques. Le premier contient la liste des champs demandés, le second,
le nom de la colonne ID depuis la requête, et le troisième, la valeur
demandée. Si ce paramètre est omis, ou défini à NULL
, alors un
masque par défaut sera utilisé.
callback
Une fonction de rappel qui sera utilisée à chaque fois que la requête est envoyée à MySQL. Elle ne reçoit qu'un seul paramètre, un booléen, indiquant si la requête a été envoyée via Memcache.
TRUE
si l'association ou la dé-association a été un succès, ou FALSE
si une erreur survient.
Exemple #1 Exemple avec mysqlnd_memcache_set() et var_dump() comme fonction de rappel de déboguage.
<?php
$mysqli = new mysqli("host", "user", "passwd", "database");
$memc = new Memcached();
$memc->addServer("host", 11211);
mysqlnd_memcache_set($mysqli, $memc, NULL, 'var_dump');
/* Cette requête sera interceptée et exécutée via le protocole Memcache */
echo "Envoi de la requête pour l'ID via Memcache : ";
$mysqli->query("SELECT f1, f2, f3 FROM test WHERE id = 1");
/* f1 n'est pas configuré comme une clé de champ valide, cette requête ne sera pas envoyée via Memcache */
echo "Envoi de la requête pour f1 via Memcache : ";
$mysqli->query("SELECT id FROM test WHERE f1 = 1");
mysqlnd_memcache_set($mysqli);
/* Maintenant, le protocole régulier MySQL sera utilisé */
echo "var_dump ne sera pas appelé : ";
$mysqli->query("SELECT f1, f2, f3 WHERE id = 1");
?>
L'exemple ci-dessus va afficher :
Envoi de la requête pour l'ID via Memcache: bool(true) Envoi de la requête pour f1 via Memcache: bool(false) var_dump ne sera pas appelé :