/** * @param ApplicationContext $context * @param array $options * @param \Redis $redis * @throws CacheException */ public function __construct(ApplicationContext $context, array $options = [], \Redis $redis = null) { parent::__construct($context, $options); if (null === $redis) { $redis = $this->getRedisClient(); } $this->redis = $redis; }
/** * @param \TYPO3\Flow\Core\ApplicationContext $context * @param array $options * @param \Redis $redis * @throws CacheException */ public function __construct(\TYPO3\Flow\Core\ApplicationContext $context, array $options = array(), \Redis $redis = NULL) { parent::__construct($context, $options); if (NULL === $redis) { $redis = $this->getRedisClient(); } $this->redis = $redis; }
/** * Sets a reference to the cache frontend which uses this backend and * initializes the default cache directory. * * @param \TYPO3\Flow\Cache\Frontend\FrontendInterface $cache The cache frontend * @return void * @throws \TYPO3\Flow\Cache\Exception */ public function setCache(FrontendInterface $cache) { parent::setCache($cache); $codeOrData = $cache instanceof PhpFrontend ? 'Code' : 'Data'; $cacheDirectory = $this->cacheDirectory ?: $this->environment->getPathToTemporaryDirectory() . 'Cache/' . $codeOrData . '/' . $this->cacheIdentifier . '/'; if (!is_writable($cacheDirectory)) { try { \TYPO3\Flow\Utility\Files::createDirectoryRecursively($cacheDirectory); } catch (\TYPO3\Flow\Utility\Exception $exception) { throw new \TYPO3\Flow\Cache\Exception('The cache directory "' . $cacheDirectory . '" could not be created.', 1264426237); } } if (!is_dir($cacheDirectory) && !is_link($cacheDirectory)) { throw new \TYPO3\Flow\Cache\Exception('The cache directory "' . $cacheDirectory . '" does not exist.', 1203965199); } if (!is_writable($cacheDirectory)) { throw new \TYPO3\Flow\Cache\Exception('The cache directory "' . $cacheDirectory . '" is not writable.', 1203965200); } $this->cacheDirectory = $cacheDirectory; $this->cacheEntryFileExtension = $cache instanceof PhpFrontend ? '.php' : ''; if (strlen($this->cacheDirectory) + 23 > $this->environment->getMaximumPathLength()) { throw new \TYPO3\Flow\Cache\Exception('The length of the temporary cache path "' . $this->cacheDirectory . '" exceeds the maximum path length of ' . ($this->environment->getMaximumPathLength() - 23) . '. Please consider setting the temporaryDirectoryBase option to a shorter path. ', 1248710426); } }
/** * Sets a reference to the cache frontend which uses this backend and * initializes the default cache directory. * * @param \TYPO3\Flow\Cache\Frontend\FrontendInterface $cache The cache frontend * @return void * @throws Exception */ public function setCache(FrontendInterface $cache) { parent::setCache($cache); $cacheDirectory = $this->cacheDirectory; if ($cacheDirectory == '') { $codeOrData = $cache instanceof PhpFrontend ? 'Code' : 'Data'; $baseDirectory = $this->cacheManager->isCachePersistent($cache->getIdentifier()) ? FLOW_PATH_DATA . 'Persistent/' : $this->environment->getPathToTemporaryDirectory(); $cacheDirectory = $baseDirectory . 'Cache/' . $codeOrData . '/' . $this->cacheIdentifier . '/'; } if (!is_writable($cacheDirectory)) { try { \TYPO3\Flow\Utility\Files::createDirectoryRecursively($cacheDirectory); } catch (\TYPO3\Flow\Utility\Exception $exception) { throw new Exception('The cache directory "' . $cacheDirectory . '" could not be created.', 1264426237); } } if (!is_dir($cacheDirectory) && !is_link($cacheDirectory)) { throw new Exception('The cache directory "' . $cacheDirectory . '" does not exist.', 1203965199); } if (!is_writable($cacheDirectory)) { throw new Exception('The cache directory "' . $cacheDirectory . '" is not writable.', 1203965200); } $this->cacheDirectory = $cacheDirectory; $this->cacheEntryFileExtension = $cache instanceof PhpFrontend ? '.php' : ''; }
/** * Does garbage collection * * @return void * @api */ public function collectGarbage() { $this->backend->collectGarbage(); }
/** * Initializes the identifier prefix when setting the cache. * * @param FrontendInterface $cache * @return void */ public function setCache(FrontendInterface $cache) { parent::setCache($cache); $pathHash = substr(md5(FLOW_PATH_ROOT . $this->context . $cache->getIdentifier()), 0, 12); $this->identifierPrefix = 'Flow_' . $pathHash . '_'; }