0

次のコードを適用して、ドクトリン 1.24 で初めて結果キャッシュを設定しました。

$servers = array(
  'host'       => 'localhost',
  'port'       => 11211,
  'persistent' => true
);
$cacheDriver = new Doctrine_Cache_Memcache(
  array(
    'servers' => $servers,
    'compression' => false
  )
);
$manager->setAttribute(Doctrine::ATTR_RESULT_CACHE,$cacheDriver);
$manager->setAttribute(Doctrine::ATTR_RESULT_CACHE_LIFESPAN, 3600 );

これは、次のような DQL quire のキャッシュに最適です。

enter code here$q = Doctrine_Query::create()
    ->from('Software s')
    ->leftJoin('s.Files f')
    ->useResultCache();
$q->execute();

ただし、私が興味を持っているのは、次のようなテーブル ルックアップをキャッシュする方法です。

xyzTable::getInstance()->findOneBySufff($stuff);

これらは、私のアプリケーション コードでははるかに頻繁に発生します。どうすればこれを達成できますか? さらに、doctrine 1.2 で memcache を使用するためのガイドがあれば、私はもっとうれしいです。

4

1 に答える 1

1

を実装する必要があります

xyzTable::getInstance()->findOneBySufff($stuff);

独自のxyzTableクラスの関数。

class xyzTable extends Doctrine_Table 
{
     public function findOneByStuff($stuff) {
         return $this->createQuery('x')
              ->select('x.*')
              ->where('x.stuff = ?', $stuff)
              ->useResultCache()
              ->fetchOne();

     }
}

'doctrine-cli'スクリプトでテーブル作成を有効にしていることを確認してください

 ....
 $doctrine_config['generate_models_options'] = 
    array('generateTableClasses' => true);

 $cli = new Doctrine_Cli($doctrine_config);
 ....
于 2012-10-15T18:58:16.763 に答える