我正在尝试使用以下代码在Symfony 1.4中设置doctrine 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 );
我没有看到任何错误,但脚本执行时间与没有缓存完全相同。如何检查缓存实际上是否正常工作?
答案 0 :(得分:1)
您似乎没有请求之间的持久性。
要使sqlite :: memory对下一个请求有效,您必须使用“persistency”
在内存中,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在diple dot net]的评论粘贴