Ich habe versucht, Memcached in DoctrineORM Modul meines ZendFramework 2-Projekt zu konfigurieren Caching-Abfragen, die Ergebnisse und Metadaten folgen diesem Tutorial https://github.com/doctrine/DoctrineORMModule/blob/master/docs/cache.md In module.config.phpWie konfiguriert man eine Entität als Teil des Second-Level-Cache in DoctrineORMModule?
<?php
return array(
'service_manager' => array(
'invokables' => array(
// ...
),
'factories' => array(
'doctrine.cache.my_memcached' => function ($sm) {
$cache = new \Doctrine\Common\Cache\MemcachedCache();
$memcache = new Memcached();
$memcache->addServer('localhost', 11211);
$cache->setMemcached($memcache);
return $cache;
},
'MemcachedFactory' => \Application\Service\Cache\MemcachedFactory::class,
)
),
'doctrine' => array(
'cache' => array(
'memcached' => array(
'namespace' => '_Doctrine',
'instance' => 'MemcachedFactory',
),
),
'configuration' => array(
'orm_default' => array(
'query_cache' => 'memcached',
'result_cache' => 'memcached',
'metadata_cache' => 'memcached',
'hydration_cache' => 'memcached',
'second_level_cache' => [
'enabled' => true,
'default_lifetime' => 200,
'default_lock_lifetime' => 500,
'file_lock_region_directory' => './data/cache',
'regions' => [
'My\FirstRegion\Name' => [
'lifetime' => 800,
'lock_lifetime' => 1000
],
'My\SecondRegion\Name' => [
'lifetime' => 10,
'lock_lifetime' => 20
],
],
],
),
),
'driver' => array(
'_driver' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
'cache' => 'my_memcached',
'paths' => array(__DIR__ . '/../src/Application/Entity')
),
'orm_default' => array(
'drivers' => array(
'Application\Entity' => '_driver'
),
),
),
),
);
und nachdem ich schaffen ein Verfahren, wie das auszuführen folgende:
public function findById($id) {
$qb = $this->entityManager->createQueryBuilder();
$qb->select("u")
->from(User::class, "u")
->where($qb->expr()->eq("u.id", ":id"))
->setParameter("id", (int) $id);
return $qb->getQuery()->setCacheable(true)->getOneOrNullResult();
}
und nach, erhalte ich eine Doctrine\ORM\Cache\CacheException
mit Nachricht:
Die Entität "Application \ Entity \ User" wurde nicht als Teil des Cache der zweiten Ebene konfiguriert.
Wer kann mir vorschlagen, dieses Problem zu lösen?
Bitte, weitere Informationen über Ihre Memcached-Konfiguration hinzufügen – ceadreak
Above ich Informationen über meine Memcached-Konfiguration hinzugefügt –