2

我正在尝试使用以下代码在 Symfony 1.4 中设置学说 sqlite 缓存:

$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 回答