(PECL mysqlnd_memcache >= 1.0.0)
mysqlnd_memcache_set — Asociar una conexión de MySQL con una conexión de Memcache
$mysql_connection
[, Memcached $memcache_connection
[, string $pattern
[, callback $callback
]]] )
Asocia mysql_connection
con
memcache_connection
empleando pattern
como una expresión regular PCRE, y callback
como una retrollamada
de notificación o para desestablecer la asociación de mysql_connection
.
Al tiempo que asocia una conexión de MySQL con una conexión de Memcache, esta función consultará al servidor de MySQL por su configuración. Detectará automáticamente si el servidor está configurado para utilizar el Complemento InnoDB Memcache Daemon o el soporte para Cluster NDB Memcache de MySQL. También consultará al servidor para identificar automáticamente tablas exportadas y otras opciones de configuración. El resultado de esta configuración automática se puede recuperar con mysqlnd_memcache_get_config().
mysql_connection
Un gestor a un Servidor de MySQL empleando una de las extensiones de la API de MySQL para PHP, las cuales son PDO_MYSQL, mysqli o ext/mysql.
memcache_connection
Una instancia de Memcached con una
conexión al complemento Memcache Daemon de MySQL. Si se omite este
parámetro, mysql_connection
estará disociado
de cualquier conexión de memcache. Y existe una asociación previa será
reemplazada.
pattern
Una expresión regular con la sintaxis de Expresiones
regulares compatibles con Perl empleada para identificar consultas
de Memcache potenciales. La consulta debería tener tres subpatrones. El
primer subpatrón contiene la lista de campos solicitados; el segundo, el nombre
de la columna ID de la consulta; y el tercero, el valor solicitado. Si
se omite este parámetro o se establece a NULL
, se utilizará un
patrón predeterminado.
callback
Una retrollamada que será empleada siempre que se comience el envío de una consulta a MySQL. La retrollamada recibirá un único parámetro de tipo boolean indicando si una consulta fue enviada mediante Memcache.
TRUE
si la asociación o disociación tiene éxito, o de lo contrario FALSE
si
ocurrió un error.
Ejemplo #1 Ejemplo de mysqlnd_memcache_set() con var_dump() como una retrollama de depuración simple.
<?php
$mysqli = new mysqli("host", "usuario", "contraseña", "base_de_datos");
$memc = new Memcached();
$memc->addServer("host", 11211);
mysqlnd_memcache_set($mysqli, $memc, NULL, 'var_dump');
/* Esta consulta será interceptada y ejecutada por el protocolo Memcache */
echo "Enviando la consulta para id mediante Memcache: ";
$mysqli->query("SELECT f1, f2, f3 FROM test WHERE id = 1");
/* f1 no está configurado como un campo de clave válido, por lo que esta no se enviará a Memcache */
echo "Enviando la consulta para f1 mediante Memcache: ";
$mysqli->query("SELECT id FROM test WHERE f1 = 1");
mysqlnd_memcache_set($mysqli);
/* Ahora se empleará el protocolo regular de MySQL */
echo "var_dump no será invocado: ";
$mysqli->query("SELECT f1, f2, f3 WHERE id = 1");
?>
El resultado del ejemplo sería:
Enviando la consulta para id mediante Memcache: bool(true) Enviando la consulta para f1 mediante Memcache: bool(false) var_dump no será invocado: