Caché de valores en disco con var_export de PHP

Publicado en Snippets · 01 January 2019.

Hace unos diez años desarrollé un sitio web de anuncios clasificados. En este proyecto había un dato que se utilizaba casi en todas las páginas del sitio. Este dato era el de las provincias de España y se guardaba en una tabla( un registro por provincia ) de la base de datos. El cliente podía añadir, modificar y borrar provincias de la web, aunque como supondrás casi nunca lo hacían.

Seguramente tú, igual que yo con las provincias, tienes en cada proyecto datos que usas casi siempre. El sistema tiene que lidiar con pedir esa información al servidor de base de datos, procesar el cursor de resultados y devolver la información. En esta entrada voy a explicar( usando las provincias de Andalucía como dato ) una forma de cachear a bajo nivel este tipo de información para que podamos hacer uso de ella de manera rápida y simple.

Para cachear las provincias( o cualquier información similar que usemos a menudo en nuestro proyecto web ), podemos:

  • Guardar ese dato en memoria( por ejemplo, con APCu ). Es la opción más rápida pero no siempre está disponible en el alojamiento del proyecto, y más ahora que no queda claro si APCu está abandonado o no.
  • Guardar esa información a disco usando la función var_export de PHP. Es la segunda opción más rápida pero te tocará lidiar con algunos aspectos a bajo nivel.
  • Usar algún sistema de almacenamiento clave/valor, como Redis. Más lenta que la segunda opción pero te quitará del trabajo a bajo nivel.

Nosotros vamos a tratar en esta entrada con la segunda opción, para ello cachearemos, como hemos dicho, las provincias de Andalucía( Almería, Cádiz, Córdoba, Granada, Huelva, Jaén, Málaga y Sevilla ) en un archivo y luego cargar la información desde ese mismo archivo.

La información en el archivo estará representada en “formato PHP” con lo que, por un lado, no habrá que deserializar el dato( o cualquier tipo de transformación posterior ). Por otro lado, PHP podrá descomponerlo en opcodes y hacer uso de su caché opcache. O sea, que es una solución bastante rápida.

Para guardar la información en “formato PHP” usaremos la función var_export que este lenguaje proporciona. var_export permite representar una estructura de datos tal y como la codearía un programador. No te preocupes si la definición no te ha quedado claro( es normal ), ahora con el ejemplo de uso entenderás perfectamente qué hace.

El primer paso sería crear el archivo de la caché. Este proceso debe realizarse en el momento que se actualiza la información( en nuestro ejemplo, cuando se añade, modifica, borra alguna provincia ): En la línea 5 obtendríamos( normalmente de la base de datos ) la información muy usada que queremos cachear.

En la línea 8 obtendríamos el listado de provincias en formato PHP( es decir, tal como un programador la codearía ).

En la línea 25 guardamos la información en el archivo de caché. El contenido del archivo de caché quedaría: Finalmente, para recuperar la información desde el archivo de caché sería tan fácil( y rápido a nivel de optimización) como: Espero que te haya gustado este método simple pero eficiente de cacheo. Si te ha gustado, no dudes en compartir por redes sociales. Buen comienzo de año y ¡ gracias !

¡ Compártelo !
Este sitio utiliza cookies propias y de terceros para mejorar tu experiencia con el sitio web. Al continuar con la navegación consideramos que acepta su uso.