/** * Подписью кеша служит кол-во ячеек, принадлежащих пользователям. */ private function getCachable($key) { $sign = $this->getOwnedCellsCnt(); $DATA = PSCacheGroups::MOSAIC()->getFromCache($this->id, PsUtil::getClassConsts(__CLASS__, 'CACHABLE_'), $sign); if (!is_array($DATA)) { $DATA = array(); $ownedCells = $this->BEAN->getOwnedCells($this->id); $sign = count($ownedCells); //Честно посчитаем подпись по кол-ву ячеек, с которым была построена карта $DATA[self::CACHABLE_AREAS] = MosaicImageCellsCompositor::area($ownedCells, $this->cellWidth, $this->cellHeight); $DATA[self::CACHABLE_STATISTIC] = $this->BEAN->getStatictic($this->id); PSCacheGroups::MOSAIC()->saveToCache($DATA, $this->id, $sign); } return array_get_value($key, $DATA); }
/** * Метод строит композицию временной шкалы. * Построенная композиция будет автоматически сохранена в кеш. * Методы были разделены осознанно, возможно нам нужно будет получить именно композицию. * * @return TimeLineItemsComposite */ public final function getTimeLineComposition(ArrayAdapter $params) { $cacheKey = $this->prepareBuildCompositionParamsAndGetCahceKey($params); $this->LOGGER->info('Строим хронологическую шкалу, данные: ' . $cacheKey); $this->profilerStart(__FUNCTION__); try { $composition = $this->buildComposition($params); check_condition($composition instanceof TimeLineItemsComposite, 'Некорректно построена хронологическая шкала'); $this->profilerStop(); $this->LOGGER->info('Шкала успешно построена'); PSCacheGroups::TIMELINES()->saveToCache($composition->getTimeLineJson(), $cacheKey); $this->LOGGER->info('Шкала сохранена в кеш под ключём: ' . $cacheKey); return $composition; } catch (Exception $ex) { $this->profilerStop(false); $this->LOGGER->info('Ошибка построения шкалы: ' . $ex->getMessage()); throw $ex; } }
protected function cacheGroup() { return PSCacheGroups::POPUPS(); }