Buscar..
Observaciones
Caché utilizando memcache
Memcache es un sistema de almacenamiento en caché de objetos distribuidos y utiliza key-value
para almacenar datos pequeños. Antes de comenzar a llamar código de Memcache
a PHP, debe asegurarse de que esté instalado. Eso se puede hacer usando el método class_exists
en php. Una vez que se valida que el módulo está instalado, comienza a conectarse a la instancia del servidor memcache.
if (class_exists('Memcache')) {
$cache = new Memcache();
$cache->connect('localhost',11211);
}else {
print "Not connected to cache server";
}
Esto validará que los controladores php de Memcache estén instalados y se conectarán a la instancia del servidor memcache que se ejecuta en localhost.
Memcache se ejecuta como un demonio y se llama memcached
En el ejemplo anterior solo nos conectamos a una sola instancia, pero también puede conectarse a múltiples servidores usando
if (class_exists('Memcache')) {
$cache = new Memcache();
$cache->addServer('192.168.0.100',11211);
$cache->addServer('192.168.0.101',11211);
}
Tenga en cuenta que, en este caso, a diferencia de la conexión, no habrá ninguna conexión activa hasta que intente almacenar o recuperar un valor.
En el almacenamiento en caché hay tres operaciones importantes que deben implementarse
- Almacenar datos: agregar nuevos datos al servidor memcached
- Obtener datos: obtener datos del servidor memcached
- Eliminar datos: eliminar datos ya existentes del servidor memcached
Almacenamiento de datos
$cache
o objeto de clase memcached tiene un método de set
que toma una clave, valor y tiempo para guardar el valor para (ttl).
$cache->set($key, $value, 0, $ttl);
Aquí $ ttl o time to live es el tiempo en segundos que desea que memcache almacene el par en el servidor.
Obtener datos
$cache
o objeto de clase memcached tiene un método de get
que toma una clave y devuelve el valor correspondiente.
$value = $cache->get($key);
En caso de que no haya un valor establecido para la clave, se devolverá nulo.
Borrar datos
A veces es posible que tenga que eliminar algún valor de caché. $cache
instancia de $cache
o memcache tiene un método de delete
que puede usarse para el mismo.
$cache->delete($key);
Pequeño escenario para el almacenamiento en caché
Asumamos un simple blog. Tendrá múltiples publicaciones en la página de destino que se obtendrán de la base de datos con cada carga de página. Para reducir las consultas de SQL podemos usar memcached para almacenar en caché las publicaciones. Aquí hay una implementación muy pequeña.
if (class_exists('Memcache')) {
$cache = new Memcache();
$cache->connect('localhost',11211);
if(($data = $cache->get('posts')) != null) {
// Cache hit
// Render from cache
} else {
// Cache miss
// Query database and save results to database
// Assuming $posts is array of posts retrieved from database
$cache->set('posts', $posts,0,$ttl);
}
}else {
die("Error while connecting to cache server");
}
Caché utilizando caché APC
El caché de PHP alternativo (APC) es un caché de código de operación gratuito y abierto para PHP. Su objetivo es proporcionar un marco gratuito, abierto y robusto para almacenar en caché y optimizar el código intermedio de PHP.
sudo apt-get install php-apc
sudo /etc/init.d/apache2 restart
Añadir caché:
apc_add ($key, $value , $ttl);
$key = unique cache key
$value = cache value
$ttl = Time To Live;
Eliminar caché:
apc_delete($key);
Ejemplo de Set Cache:
if (apc_exists($key)) {
echo "Key exists: ";
echo apc_fetch($key);
} else {
echo "Key does not exist";
apc_add ($key, $value , $ttl);
}
APC es casi 5 veces más rápido que Memcached.