php - Habilitar la memoria caché de Doctrine 2 en un proyecto de ZF2
caching zend-framework (1)
Para reducir los dolores de cabeza innecesarios, utilice siempre la memoria caché de array
en tiempo de desarrollo y memcached
, redis
o apc
cuando la aplicación se ejecute en el entorno de producción.
Debe poner sus definiciones de fábrica bajo la clave service_manager
> factories
, no directamente en la matriz de configuración del módulo.
Prueba esto:
// module.config.php
return array(
''doctrine'' => array(
''configuration'' => array(
''orm_default'' => array(
''metadata_cache'' => ''mycache'',
''query_cache'' => ''mycache'',
''result_cache'' => ''mycache'',
''hydration_cache'' => ''mycache'',
)
),
),
''service_manager'' => array(
''factories'' => array(
''doctrine.cache.mycache'' => function ($sm) {
$cache = new /Doctrine/Common/Cache/MemcacheCache();
$memcache = new /Memcache();
$memcache->connect(''localhost'', 11211);
$cache->setMemcache($memcache);
return $cache;
},
),
),
);
También recomiendo mover las fábricas a clases de fábrica individuales, siempre. De esta forma, tendrá una aplicación más legible, mantenible y eficiente en el entorno de producción con la ayuda de la memoria caché de configuración fusionada .
Por ejemplo:
''service_manager'' => array(
''factories'' => array(
''doctrine.cache.mycache'' => ''Your/Memcache/Factory'' // implement FactoryInterface
),
),
);
¿Cómo habilitar la memoria caché en un proyecto que trabaje con Zend Framework 2 y Doctrine 2? y ¿qué caché exactamente debería estar habilitado el caché de doctrina o el caché Zend?
Aquí lo que he intentado pero no puedo ver ninguna diferencia en la ejecución del tiempo agregado en el
module / Application / config / module.config.php
''doctrine.cache.my_memcache'' => function ($sm) {
$cache = new /Doctrine/Common/Cache/MemcacheCache();
$memcache = new /Memcache();
$memcache->connect(''localhost'', 11211);
$cache->setMemcache($memcache);
return $cache;
},
''doctrine.cache.apc'' => function ($sm){
$apc = new /Doctrine/Common/Cache/ApcCache();
return $apc;
},
// Doctrine config
''doctrine'' => array(
''driver'' => array(
__NAMESPACE__ . ''_driver'' => array(
''class'' => ''Doctrine/ORM/Mapping/Driver/AnnotationDriver'',
''cache'' => ''array'',
''paths'' => array(__DIR__ . ''/../src/'' . __NAMESPACE__ . ''/Entity''),
),
''orm_default'' => array(
''drivers'' => array(
__NAMESPACE__ . ''/Entity'' => __NAMESPACE__ . ''_driver''
),
)
),
''configuration'' => array(
''orm_defaults'' => array(
''metadata_cache'' => ''apc'',
''query_cache'' => ''apc'',
''result_cache'' => ''my_memcache'',
)
)
),
cualquier ayuda o idea o explicación es apreciada. Gracias.