Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Utilización cache doctrine

16 de marzo de 2016

Saludos

Estoy utilizando cache de doctrine, pero tengo dudas de funcionamiento.

Me podria explicar:

$query->useQueryCache(TRUE); 
$query->useResultCache(TRUE);
  • El Cache la almacena junto con la aplicacion symfony.

  • Si es el caso anterior, se podria guardar aparte y si limpio la cache de symfony se borra las datos almacenados.

  • Que paso cuando el dato cambia en la BD.

La bd a consultar es de solo lectura y mi duda es como puedo actualizar la consulta, por que los cambios a la bd lo realiza otra aplicación.

Mi aplicacion no tendria como saber que se ingreso, actualizo o elimino algun dato de la consulta, la unica forma es hacer la consulta obtener la repuesta.

Gracias


Respuestas

#1

Amigo lo basico es:

$query->useQueryCache(TRUE); //guarda la consulta, !no el resultado!
$query->useResultCache(TRUE); //guarda el resultado

la forma en la que guarda depende de lo que pongas es el archivo config.yml:

metadata_cache_driver: array
       query_cache_driver: array
       result_cache_driver: array

Puede ser apc, memcache, xcache. Del almacenamiento se ocupa el modulo. Apc me parece que guarda en donde guarda el modulo APC. O puede ser un tipo especial que es array que se guarda en el directorio cache de symfony:

metadata_cache_driver: array
        query_cache_driver: array
        result_cache_driver: array

Para borrar la cache en los métodos adicionar editar y borrar tienes que limpiar la cache:

$em->getConfiguration()->getResultCacheImpl()->deleteAll();

Si otra aplicación externa accede a los datos y modifica entonces no puedes cachear las consultas. Yo creo que no hay solución.

@jdvellon

18 marzo 2016, 16:41