我想在Zend Framework 2项目中使用Doctrine 2的结果缓存,如下所示:
$query->useResultCache(true, 3600, 'test');
但它不起作用。
这是我的配置文件:
<?php
return array(
'doctrine' => array(
'connection' => array(
'orm_default' => array(
'driverClass' =>'Doctrine\DBAL\Driver\PDOMySql\Driver',
'params' => array(
'host' => 'localhost',
'port' => '3306',
'user' => 'root',
'password' => '',
'dbname' => 'skeleton',
'charset' => 'utf8',
'driverOptions' => array (1002 => 'SET NAMES utf8'),
)
)
),
'configuration' => array(
'orm_default' => array(
'metadata_cache' => 'array',
'query_cache' => 'array',
'result_cache' => 'array',
'driver' => 'orm_default',
'generate_proxies' => true,
'proxy_dir' => 'data/DoctrineORMModule/Proxy',
'proxy_namespace' => 'DoctrineORMModule\Proxy',
'filters' => array()
)
),
)
);
所以我的问题:我的代码中缺少什么?
答案 0 :(得分:4)
您正在使用ArrayCache实现:
'result_cache' => 'array',
ArrayCache是一个“假”缓存,它只是将值放入一个数组中,该数组在请求结束时消失,就像PHP中的其他内容一样。您需要使用在请求之间保持活动的缓存,如APC,Memcache,XCache。我会指出如何做到这一点,但我不熟悉Zend2,检查文档说的内容,你可能只需要将上述行更改为“apc”。