2015-02-13 52 views
5

Sto lavorando a un progetto Symfony2 utilizzando Doctrine. Voglio ottimizzare le prestazioni dell'API aggiungendo la cache alle query.Symfony 2 cache Risultati query doctrine

Ho guardato alcune opzioni quali:

  • cache di annotazione Symfony cache di
  • Dottrina
  • Memcache

non a sicuro con quale dovrei andare ma a me sembra che i dati di cache a livello di Doctrine siano i più adatti.

Dire che vorrei che qualcuno mi aiutasse o che mi guidasse come configurare il cache di Doctrine e spiegare come funziona esattamente.

cioè ho questa query:

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'); 
    } 
} 

Come dovrei aggiungere una cache per questa ricerca? C'è qualche libreria Doctrine di cui ho bisogno per iniettare qualsiasi cosa di cui ho bisogno a use?

risposta

14

In doctrine per memorizzare nella cache le query o risultati che si possono effettuare le seguenti operazioni:

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 
} 

Controllare doc per ulteriori informazioni su questi metodi. Questo renderà funzionante il driver della cache your - non importa quale driver stai usando.

Per configurare Symfony per utilizzare il driver di query specifico, è necessario modificare le impostazioni in config.yml - verificare this per visualizzare l'elenco completo di opzioni. Ciò che è importante nella vostra cache è (questo è esempio di configurazione apc):

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

Si potrebbe anche voler controllare this e this blog

+0

e se sto usando rigorosamente Dottrina dbal c'è un modo ..? thx – Tomazi

+3

Mi sono appena ralizzato che hai già fatto una domanda identica http://stackoverflow.com/questions/27899297/caching-doctrine-results-symfony2/27899397#27899397 –

Problemi correlati