Cachear consultas mysql con ezSQL

PHP-MySQLEn nuestras paginas o proyectos, hay ocasiones en las que utilizamos bases de datos en las que no se realizan muchos cambios pero que si que utilizamos un gran numero de consultas. En estos casos, existe una forma de mejorar el rendimiento y la velocidad de las consultas, cacheandolas. Para esto, la librería ezSQL nos ofrece una forma fácil y cómoda de implementarlo.

Cuando cacheamos una consulta, lo que estamos haciendo es guardar el resultado de esta consulta en un fichero de texto, así, de esta manera, la siguiente vez que realicemos esta consulta, no hará falta volver a conectar con la Base de Datos, sino que bastará con leer ese fichero. Con esto ganaremos velocidad en la carga de la pagina y disminuiremos la carga en el servidor.

Para hacerlo de una forma fácil y sencilla, vamos a utilizar la librería ezSQL, de la cual ya vimos en otro artículo su uso básico. Veamos los pasos que hay que seguir:

1.- Incluimos la librería y creamos un nuevo objeto:


// Include ezSQL core
include_once "classes/ez_sql_core.php";

// Include ezSQL database specific component
include_once "classes/ez_sql_mysql.php";

// Instanciar la clase con los parametros de la bbdd
$db = new ezSQL_mysql('root','root','pruebas','localhost');

2.- Configuramos los parámetros del cache.


// Cache expiry
$db->cache_timeout = 1; // Note: this is hours

// Specify a cache dir. Path is taken from calling script
$db->cache_dir = 'cache';

// (1. You must create this dir. first!)
// (2. Might need to do chmod 775)

// Global override setting to turn disc caching off
// (but not on)
$db->use_disk_cache = true;

// By wrapping up queries you can ensure that the default
// is NOT to cache unless specified
$db->cache_queries = true;

3.- Realizamos una consulta y llamamos al método debug para ver el resultado:


$db->get_results("SELECT * FROM usuarios");
$db->debug();

Cuando ejecutemos este archivo por primera vez, se hará una conexión con la base de datos y se mostraran los datos. Si actualizamos para volver a ejecutar, veremos que aparecen los mismos datos, pero el debug nos informa de que la consulta se ha sacado del cache: Results retrieved from disk cache.

También podemos ir al directorio de cache, y ver que se ha creado un fichero nuevo, y que dentro de este esta el resultado de la consulta.

Aqui os dejo el fichero php completo:


<?php
// Include ezSQL core
include_once "classes/ez_sql_core.php";

// Include ezSQL database specific component
include_once "classes/ez_sql_mysql.php";

// Instanciar la clase con los parametros de la bbdd
$db = new ezSQL_mysql('root','root','pruebas','localhost');

// Cache expiry
$db->cache_timeout = 24; // Note: this is hours

// Specify a cache dir. Path is taken from calling script
$db->cache_dir = 'cache';

// (1. You must create this dir. first!)
// (2. Might need to do chmod 775)

// Global override setting to turn disc caching off
// (but not on)
$db->use_disk_cache = true;

// By wrapping up queries you can ensure that the default
// is NOT to cache unless specified
$db->cache_queries = true;

$db->get_results("SELECT * FROM usuarios");
$db->debug();

?>

¿Te ha gustado este artículo? ¿te ha servido de ayuda? No dudes en comentarlo o compartirlo!

Un saludo, Fran Aramayo

Deja una respuesta