Как кешировать хранимую процедуру с помощью Doctrine

У меня есть сложная хранимая процедура, которая запускается несколько раз на сайте, разработанном в php. У меня есть Doctrine в системе (я не учитель гуру) от предыдущего разработчика. Хранимая процедура занимает около 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;
}

1

Решение

Возможно, вы ищете Кэш результатов доктрины. Вы можете настроить запрос, который выполняет хранимую процедуру, на использование кэша результатов. Если данные часто изменяются, вы можете установить короткое время жизни для кеша и / или настроить прослушиватель событий, чтобы сделать кеш недействительным при изменении соответствующих данных.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]