May 02

Como continuación del anterior post voy a explicar brevemente como montar una cache de objetos en memoria compartida usando APC. Esto nos permite disponer de una cache accesible para cualquier proceso Apache que se esté ejecutando en el servidor. Podemos guardar cualquier variable (resultados de queries, páginas html, cualquier tipo de objeto, etc.) y esta se conservará entre las distintas peticiones hasta que la borremos de cache o expire el TTL que queramos.

Una forma rápida de ver su uso es con un ejemplo:

[php] $obj = new Objeto();
apc_store(‘key’,serialize($obj),3600);
$result = unserialize(apc_fetch(‘key’));
var_dump($result); [/php]

Usando apc_store() guardamos $obj en cache durante una hora. Podemos recuperar o borrar $obj de la cache usando el identificador key. Es necesario realizar serialize/unserialize si guardamos datos como objetos o arrays, para variables simples no es necesario.

Para borrar el anterior objeto de cache:

[php] apc_delete(‘key’); [/php]

Para evitar el uso de define el cual es bastante lento disponemos de apc_define_constants() y apc_load_constants() para guardar y recuperar constantes de cache.

El APC ofrece una interfaz gráfica para ver el uso que hacemos de la cache, que opciones tenemos activas, archivos “compilados”, variables almacenadas, etc. a la vez que nos permite borrar todo el contenido de la cache. Podemos obtener la misma información con la función apc_cache_info() y para borrar la cache tenemos apc_clear_cache() aunque la interfaz gráfica no deja de ser interesante.

Un snapshot de ejemplo:

APC snapshot

Para instalarla en FreeBSD se trata de copiar el archivo /usr/local/share/doc/APC/apc.php en algún lugar dentro de nuestro document root del Apache.

Tagged with:
preload preload preload