2015-02-13 22 views
5

Ich arbeite an einem Symfony2-Projekt mit Doctrine. Ich möchte die API-Leistung optimieren, indem ich Abfragen Cache hinzufüge.Symfony 2 Cache Doctrine Abfrageergebnisse

Ich habe nur wenige Möglichkeiten sah, wie:

  • Symfony Anmerkung Cache
  • Lehre Cache
  • Memcache

, mit denen nicht sicher, den ich gehen sollte, aber für mich ist es Es scheint, als wäre die Caching-Daten auf Doctrine-Ebene am besten geeignet.

Sagen, dass ich möchte, dass jemand mir hilft oder mir hilft, Doctrine-Cache einzurichten und zu erklären, wie es genau funktioniert.

D.h. Ich habe diese Anfrage:

class QueryFactory 

    protected $connect; 

    public function __construct(Connection $connection) 
    { 
     $this->connect = $connection; 
    } 

    private function myQuery() 
    { 
     return $this->connect->createQueryBuilder() 
      ->select('user_id') 
      ->from('users', 'u') 
      ->where('u.user_id = 2'); 
    } 
} 

Wie würde ich einen Cache auf diese Abfrage hinzufügen? Gibt es irgendeine Doctrine-Bibliothek, die ich brauche, um etwas zu injizieren, das ich brauche use?

Antwort

14

In doctrine Abfragen zwischenzuspeichern oder Resultate können Sie folgendes tun:

private function myQuery() 
{ 
    return $this->connect->createQueryBuilder() 
     ->select('user_id') 
     ->from('users', 'u') 
     ->where('u.user_id = 2') 
     ->getQuery() 
     ->useQueryCache(true) // here 
     ->useResultCache(true); // and here 
} 

prüfen doc für weitere Informationen über diese Methoden. Dies macht your Cache-Treiber arbeiten - egal welchen Treiber Sie verwenden.

Um Symfony für die Verwendung eines spezifischen Abfragetreibers zu konfigurieren, müssen Sie Ihre Einstellungen unter anpassen - überprüfen Sie this, um die vollständige Liste der Optionen zu sehen. Was ist in Ihrem Cache wichtig ist, ist (dies ist apc Konfigurationsbeispiel):

entity_managers: 
     some_em: 
      query_cache_driver: apc 
      metadata_cache_driver: apc 
      result_cache_driver: apc 

Sie auch streng dbal Lehre bin mit vielleicht wollen this und this Blog-Einträge

+0

und If überprüfen, ist es eine Möglichkeit, ..? thx – Tomazi

+3

Ich habe gerade festgestellt, dass Sie bereits die gleiche Frage gestellt http://stackoverflow.com/questions/27899297/caching-doctrine-results-symfony2/27899397#27899397 –

Verwandte Themen