2

次のコードを使用して、Symfony1.4でdoctrinesqliteキャッシュを設定しようとしています。

$cacheConn   = Doctrine_Manager::connection( new PDO( 'sqlite::memory:' ) );
$cacheDriver = new Doctrine_Cache_Db( array( 'connection' => $cacheConn, 'tableName' => 'cache' ) );
$cacheDriver->createTable();
$manager->setAttribute( Doctrine_Core::ATTR_QUERY_CACHE, $cacheDriver );
$manager->setAttribute( Doctrine_Core::ATTR_RESULT_CACHE, $cacheDriver );
$manager->setAttribute( Doctrine_Core::ATTR_CACHE_LIFESPAN, 60 * 5 );
$manager->setAttribute( Doctrine_Core::ATTR_RESULT_CACHE_LIFESPAN, 60 * 5 );

エラーは表示されませんが、スクリプトの実行時間はキャッシュなしの場合とまったく同じです。キャッシュが実際に機能していることを確認するにはどうすればよいですか?

4

1 に答える 1

1

リクエスト間の永続性がないようです。

次のリクエストに対して sqlite::memory を有効にするには、「永続性」を使用する必要があります

インメモリ sqlite にはいくつかの制限があります。メモリ空間はリクエスト、セッションである可能性がありますが、ユーザー間でメモリ内のベースを共有する方法は文書化されていないようです。

リクエストの場合は、コード $pdo = new PDO( 'sqlite::memory:'); でベースを開きます。あなたの基地は次のリクエストで消えます。

セッション永続性:

$pdo = new PDO( 'sqlite::memory:', null, null, array(PDO::ATTR_PERSISTENT => true) );

ソース: http://www.php.net/manual/en/ref.pdo-sqlite.connection.php

[frederic dot glorieux at diple dot net] のコメントからコピー & ペースト

于 2013-04-25T13:20:08.817 に答える