xCache: Mejorando la potencia de PHP (y II)

En la primera parte vimos como activar esta cache de opcode para PHP y dejarla funcionar de forma automática y sin afectar a nuestros programas, logrando un aumento de rendimiento bastante considerable teniendo en cuenta el esfuerzo realizado.

Ahora vamos a pasar a meter mano al código, a encontrar puntos donde detectemos repetición excesiva y aprovecharnos de la segunda, y casi mejor, característica de xCache.

La caché de variables

Nuestros scripts en PHP tienen un tiempo de vida muy limitado. Por lo general, se comienza a ejecutar, realiza su tarea y cuando termina no queda ni rastro de sus cálculos o consultas realizadas.

Una de las técnicas que se suele usar para evitar repetir cálculos que no tiene sentido recalcular constantemente, como puede ser obtener el nº de visitantes de un foro (siempre datos muy pequeños), es almacenarlos en variables de sesión.
Estas variables de sesión sólo son accesibles para cada instancia de la misma, es decir, que incluso dos sesiones abiertas por el mismo usuario tendrán variables privadas e inaccesibles.

xCache nos proporciona un ámbito global para este registro y acceso de variables, y no pertenecen a una sesión. Incluso entre plataformas diferentes podemos establecer una comunicación (diseñándola bien, obviamente) y poder implementar funcionalidades cruzadas.

Manos a la obra

Su uso no podía ser más fácil.

Disponemos de, principalmente, tres funciones que hacen el trabajo:

  1. xcache_set($clave,$valor): Aquí asociamos el par clave-valor, donde valor puede ser desde un entero,una cadena o algo más complejo como un array de valores.

  2. xcache_get($clave), devuelve $valor: Esta función recupera el valor de la clave especificada tal cual y con su mismo tipo de dato.

  3. xcache_isset($clave), devuelve true o false: Aquí sabremos si una clave está inicializada y existe.


Como estos datos son globales, si necesitamos “privatizar” un poco y organizar los datos nos deberemos valer de componer las claves de forma que esto sea posible, por ejemplo, usando “apl_idusuario_variable” o algo similar.

En un comentario del post anterior se preguntaba cómo se podían cachear los resultados de las consultas a las bases de datos, y he aquí la forma. Con xcache_set y xcache_get podemos almacenar y recuperar incluso resultados de querys si lo vemos necesario.

El ámbito donde aplicar esta técnica es muy amplio, ya que podemos almacenar incluso los renderizados de nuestras plantillas más comunes y menos cambiantes como las cabeceras, menús, pasando por listados complejos y resúmenes diarios usando, gracias a poder usar estructuras de datos, un tiempo de caducidad de los contenidos cacheados.

Alternativas a xCache

Como bien apuntó Dimas existe APC, que es más potente que xCache pero resulta de una instalación más complicada, aunque el día que se distribuya ya instalada con el paquete de PHP estandar será la mejor opción sin duda.



Más información | Sitio web de xCache

Portada de Genbeta