Symfony2: Administrar el caché usted mismo
Agencia web » Noticias digitales » Symfony2: Administrar el caché usted mismo

Symfony2: Administrar el caché usted mismo

El caché está presente en todas partes en la informática y, afortunadamente, en otros lugares. ¡Sin él, los tiempos de procesamiento serían mucho más largos! En un momento en que todos los marcos dignos de ese nombre usan un sistema de caché, ¿por qué tendríamos que administrar el caché nosotros mismos?

Caché en Symfony2

En Symfony2, puedes configurar fácilmente un sistema de caché. Además, si quisiéramos ser exactos, parece que Symfony tiene su propio sistema de caché (app/cache/env/), y que además podemos enchufar un sistema de caché a nivel de servidor (Apache, IIS,…). Este caché es totalmente manejable y la memoria es volátil. Tan pronto como se reinicia el servidor, se elimina la memoria caché del servidor.

Sistemas de almacenamiento en caché

¿Qué sistemas de almacenamiento en caché existen? De memoria, tres programas surgen regularmente.

  • Xcaché
  • Memcached
  • APC
    APC es ahora desde PHP 5.4, por lo que no recomiendo intentar conectarlo.

En mi caso, usaré XCache. También puede encontrar mi publicación sobre cómo instalar XCache.

¿Por qué administrar su caché usted mismo?

Puedo ver algunos comentarios entrando y preguntando "¿por qué? ". Mientras que Doctrine te permite usar fácilmente el caché a través de su método useResultCache(uso, retraso, id). Mi respuesta es simple: hacer tratamientos gratis.

Un pequeño ejemplo para darte algunas ideas. Digamos que estoy almacenando en caché un elemento de una base de datos. Si modifico esta entidad, el caché no se actualizará hasta que los datos hayan caducado. Con una gestión de caché personalizada, incluso antes de que la caché alcance el tiempo asignado, podré restablecer los nuevos datos y sobrescribir los antiguos. Esto requiere una gestión significativa, pero las ganancias de rendimiento pueden ser sustanciales.

Symfony2 y cómo administrar tu propio caché

Te ofrezco esta pequeña nota de código para administrar fácilmente. En nuestro caso, la función de este Gist tiene como objetivo devolver el resultado de una consulta SQL.

Prototipo: función ejecutar ($sql_query, $id = null, $delay = 3600);
Configuraciones :

  1. _sqlpregunta corresponde a la consulta SQL que desea ejecutar.
  2. id es el identificador vinculado a los datos almacenados en caché. Para una ID x, tendrá un contenido x.
  3. retrasar es el tiempo máximo que le des al caché será válido. Por defecto, 3600 segundos. Esto significa que después de almacenar en caché sus datos, estarán disponibles durante 3600 segundos.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    función ejecutar ($sql_query, $id = nulo, $retraso = 3600)
    {
    // Declaramos una instancia de caché
    $cacheDriver = nueva DoctrinaCommonCacheXcacheCache();
    $resultados = nulo;
    //Si se ingresó una ID y el sistema de caché contiene datos para una ID "x"
    if ($id!= nulo && $cacheDriver->contains($id)) {
    //Luego tomamos los datos almacenados en caché para una ID "x"
    $resultados = $cacheDriver->fetch($id);
    }
    //Si no hay datos, en caso de que los datos almacenados en caché sean nulos
    if ($resultados == nulo) {
    //Recuperamos los datos
    $resultados = $ This->contenedor->obtener("doctrina")->getManager()->getRepository("Espacio de nombresPaquete de nombres:Entidad")->buscarTodo();
    //Si tenemos un ID de almacenamiento en caché
    if ($id!= nulo) {
    //Guardamos los datos para un ID x y para un retraso y
    $cacheDriver->save($id, $resultados, intval($retraso));
    }
    }
    //Devolvemos los resultados limitando futuras solicitudes
    volvemos $resultados;
    }

Bueno, espero que este memo te ayude. ¡Hasta pronto y gracias por leer este post!

★ ★ ★ ★ ★