我有一个复杂的存储过程,在php开发的网站上运行多次。我从以前的开发者那里学习了系统(我不是学说大师)。存储过程大约需要4.62秒才能运行并返回结果。我想缓存结果,但不熟悉Doctrine的缓存。结果限制为200,每页25。我担心的一个问题是数据可能会经常更改,因此不确定如何更快地获取网站。感谢。
修改
我找到了Doctrine \ Common \ Cache中缺少的文件并上传了它们。
我有以下功能;但是,它不是缓存:
function getGeo($latitude, $longitude, $radius, $numResults, $volunteerPid, $startPosition, $pageSize)
{
$cacheDriver = new Doctrine\Common\Cache\ArrayCache();
if ($numResults == 5) {
if ($cacheDriver->contains($volunteerPid)) {
$geoQuery = $cacheDriver->fetch($volunteerPid);
echo "Number results equals 5 and has cache";
} else {
$geoQuery = $this->connection->prepare("call sproc_qryGeoPrecint($latitude, $longitude, $radius, $numResults, $volunteerPid, $startPosition, $pageSize)");
$cacheDriver->save($volunteerPid, $geoQuery);
echo "Number results equals 5 and has NO cache";
}
} else {
if ($cacheDriver->contains($volunteerPid)) {
$geoQuery = $cacheDriver->fetch($volunteerPid);
echo "Number results equals 200 and has cache";
} else {
$geoQuery = $this->connection->prepare("call sproc_qryGeoPrecint($latitude, $longitude, $radius, $numResults, $volunteerPid, $startPosition, $pageSize)");
$cacheDriver->save($volunteerPid, $geoQuery);
echo "Number results equals 200 and has NO cache";
}
}
return $geoQuery;
}
答案 0 :(得分:0)
您可能正在寻找Doctrine result cache。您可以配置执行存储过程的查询以使用结果缓存。如果数据经常更改,您可以为缓存设置较短的生命周期和/或设置事件监听器,以在相关数据更改时使缓存无效。