Cómo guardar en Symfony 2?

Necesito almacenar en caché algunos datos específicos de la aplicación utilizando el sistema de caché de Symfony 2 para que pueda ejecutar el cache:clear para borrarlo. Todo el caché se basa en la app/cache pero ¿cómo realizo el almacenamiento en caché de los datos?

http://symfony.com/doc/current/cookbook/index.html

El único tema que veo es sobre el almacenamiento en caché de HTML con Varnish.

Si está utilizando Doctrine ya solo usa esas clases de caché.

Agregue un servicio a config.yml :

 services: cache: class: Doctrine\Common\Cache\ApcCache 

Y úsalo en tu controlador:

 if ($fooString = $this->get('cache')->fetch('foo')) { $foo = unserialize($fooString); } else { // do the work $this->get('cache')->save('foo', serialize($foo)); } 

Manera simple de usar los proveedores de caché de Doctrine . Al principio, servicio de registro (muestra en config.yml ):

 services: memcached: class: Memcached calls: - [ addServer, ['localhost', 11211] ] memcached_cache: class: Doctrine\Common\Cache\MemcachedCache calls: - [ setMemcached, [@memcached] ] 

Luego para usar obtener servicio, por ejemplo en controler:

 $cache = $this->get('memcached_cache'); 

para enviar otro servicio use llamadas :

 calls: - [ setCacheProvider, [@memcached_cache] ] 

o argumentos:

 arguments: - @memcached_cache 

De la misma manera, puede usar otras interfaces del paquete Doctrine Cache. Doctrine Cache proporciona una interfaz muy simple para la que se proporcionan varias implementaciones listas para usar:

  • ApcCache (requiere ext / apc)
  • ArrayCache (en memoria, duración de la solicitud)
  • FilesystemCache (no es óptimo para alta concurrencia)
  • MemcacheCache (requiere ext / memcache)
  • MemcachedCache (requiere ext / memcached)
  • PhpFileCache (no es óptimo para alta concurrencia)
  • RedisCache.php (requiere ext / phpredis)
  • WinCacheCache.php (requiere ext / wincache)
  • XcacheCache.php (requiere ext / xcache)
  • ZendDataCache.php (requiere Zend Server Platform)

Si aún no usa Doctrine , puede requerir proyectos de Biblioteca común para Doctrine : php composer.phar require doctrine/common o solo requiere Caching library que ofrece una API orientada a objetos para muchos backends de caché : php composer.phar require doctrine/cache

Cómo usar Doctrine Caching, puede leer en Doctrine Documentación común en el sitio web de Doctrine Project

Symfony 3.1 proporciona un nuevo componente de caché .

Symfony2 no proporciona ningún componente para el almacenamiento en caché de la capa de aplicación.

Como ya le dijeron, puede usar la biblioteca de caché de Doctrine Common http://docs.doctrine-project.org/projects/doctrine-common/en/latest/reference/caching.html

Si desea algo más avanzado, también puede usar uno de los paquetes de caché proporcionados por la comunidad. Por ejemplo, https://github.com/TheBigBrainsCompany/TbbcCacheBundle#cachebundle, que proporciona herramientas para una buena estrategia de almacenamiento en caché.

No hay memoria caché parcial en Symfony2, la memoria caché integrada es solo HTTP completa. Debe usar un proxy inverso, y si solo quiere almacenar en caché un fragmento de código, debe usar ESI. Es quizás más trabajo que con Symfony 1, pero las actuaciones valen la pena.

De todos modos, nada te impide usar un Memcached y almacenar algunas cosas en él, mira este paquete, es decir, si tu pregunta lo dice, solo tienes datos para almacenar, eso es perfecto (y un caché de Memcache es mucho más rápido que un sistema de archivos) .