Caché en consultas a la base de datos con PHP

Me gusta ir al grano cuando voy a hablar de una librería en PHP como es el caso.

En muchas ocasiones, cuando veo el número de consultas que hago a la base de datos me echo las manos a la cabeza, y dependiendo del hosting, esto puede ser que se sobrecargue de una manera bestial y la aplicación empiece a ir lenta, o lo que es peor, que tiremos el servidor nosotros mismos. También existe la posibilidad que simplemente queremos acelerar la carga de nuestra web.

¿Qué podemos hacer entonces? Cachear las consultas a la be de datos.

Con esta librería solucionaremos esto. muy sencilla de implementar como vereís. Su nombre phpFastCache

Instalar phpFastCache

Para instarlo, lo haremos de la manera más sencilla, vía composer

composer require phpFastCache/phpFastCache

Usar phpFastCache

Una vez incluida la librería, solo tendremos que usarla. Aquí un ejemplo:

use phpFastCache\CacheManager;

$config = array(
    "storage"   =>  "files",
    "path"      =>  "/cache/db/", //U otro directorio
);
CacheManager::setup($config);

//Intenta obtener productos
$productos = CacheManager::get("productos");

// Si no esta disponible, hacemos la llamada a la base de datos y guardamos
if(is_null($productos)) {
    $products = "SELECT * from productos";
    CacheManager::set('productos', $productos,600); //En este caso enviamos la llave, el contenido y el tiempo en milisegundos que durará la caché
}

Teneis toda la documentación en github.

Como ya veis es muy sencillo de usar. Así que nada, a disfrutarla!

 

¿Framework? ¿Yo?

Llevo mucho tiempo trabajando sobre la misma base en mis proyectos, incluso antes de que se popularizaran los frameworks en PHP. Con esto creo que he tenido muchas ventajas y muchos incovenientes…

Todo empezó cuando fui a dar el salto de programación estructurada a programación orientada a objetos. No me costó mucho trabajo al principio, pero luego, como todo… tiene sus cosas. La verdad, todo fue a mejor, el codigo se entendia a la perfección. Lo entendía hasta yo unos meses despues, así que fijate. El código espagueti se quedó atrás poco a poco y me fui gustando un poco más. Continua leyendo “¿Framework? ¿Yo?”

Error en la paginación de Eloquent ORM fuera de Laravel

Me ha estado dando problemas la paginación de Eloquent cuando lo uso fuera de Laravel.

No sabía por donde venía el error, así que la única solución que he encontrado es la siguiente:

En la linea 326 del fichero AbstractPaginator.php, sustituimos las función resolveCurrentPage (https://github.com/illuminate/pagination/blob/master/AbstractPaginator.php#L326):

public static function resolveCurrentPage($pageName = 'page', $default = 1)
 {
 if (isset(static::$currentPageResolver)) {
 return call_user_func(static::$currentPageResolver, $pageName);
 }
 return $default;
 }

por esta:

public static function resolveCurrentPage($pageName = 'page', $default = 1)
 {
 return empty($_GET[$pageName]) ? 1 : $_GET[$pageName];
 }

La parte negativa es que no podremos actualizar Eloquent vía Composer, pero al menos nos funcionará.

En breve, publicaré un “framework” que me he cocinado a ver que os parece.