Neos\Flow\Configuration\ConfigurationManager::flushConfigurationCache PHP Method

flushConfigurationCache() public method

If a cache file with previously saved configuration exists, it is removed.
public flushConfigurationCache ( ) : void
return void
    public function flushConfigurationCache()
    {
        $this->configurations = [self::CONFIGURATION_TYPE_SETTINGS => []];
        if ($this->temporaryDirectoryPath === null) {
            return;
        }
        $cachePathAndFilename = $this->constructConfigurationCachePath();
        if (is_file($cachePathAndFilename)) {
            if (unlink($cachePathAndFilename) === false) {
                throw new Exception(sprintf('Could not delete configuration cache file "%s". Check file permissions for the parent directory.', $cachePathAndFilename), 1341999203);
            }
            OpcodeCacheHelper::clearAllActive($cachePathAndFilename);
        }
    }

Usage Example

Example #1
0
 /**
  * Flushes caches as needed if settings, routes or policies have changed
  *
  * @param array $changedFiles A list of full paths to changed files
  * @return void
  * @see flushSystemCachesByChangedFiles()
  */
 protected function flushConfigurationCachesByChangedFiles(array $changedFiles)
 {
     $aopProxyClassRebuildIsNeeded = false;
     $aopProxyClassInfluencers = '/(?:Policy|Objects|Settings)(?:\\..*)*\\.yaml/';
     $objectClassesCache = $this->getCache('Flow_Object_Classes');
     $objectConfigurationCache = $this->getCache('Flow_Object_Configuration');
     $caches = ['/Policy\\.yaml/' => ['Flow_Security_Authorization_Privilege_Method', 'Flow_Persistence_Doctrine', 'Flow_Persistence_Doctrine_Results', 'Flow_Aop_RuntimeExpressions'], '/Routes([^\\/]*)\\.yaml/' => ['Flow_Mvc_Routing_Route', 'Flow_Mvc_Routing_Resolve'], '/Views\\.yaml/' => ['Flow_Mvc_ViewConfigurations']];
     $cachesToFlush = [];
     foreach (array_keys($changedFiles) as $pathAndFilename) {
         foreach ($caches as $cacheFilePattern => $cacheNames) {
             if (preg_match($aopProxyClassInfluencers, $pathAndFilename) === 1) {
                 $aopProxyClassRebuildIsNeeded = true;
             }
             if (preg_match($cacheFilePattern, $pathAndFilename) !== 1) {
                 continue;
             }
             foreach ($caches[$cacheFilePattern] as $cacheName) {
                 $cachesToFlush[$cacheName] = $cacheFilePattern;
             }
         }
     }
     foreach ($cachesToFlush as $cacheName => $cacheFilePattern) {
         $this->systemLogger->log(sprintf('A configuration file matching the pattern "%s" has been changed, flushing related cache "%s"', $cacheFilePattern, $cacheName), LOG_INFO);
         $this->getCache($cacheName)->flush();
     }
     $this->systemLogger->log('A configuration file has been changed, flushing compiled configuration cache', LOG_INFO);
     $this->configurationManager->flushConfigurationCache();
     if ($aopProxyClassRebuildIsNeeded) {
         $this->systemLogger->log('The configuration has changed, triggering an AOP proxy class rebuild.', LOG_INFO);
         $objectConfigurationCache->remove('allAspectClassesUpToDate');
         $objectConfigurationCache->remove('allCompiledCodeUpToDate');
         $objectClassesCache->flush();
     }
 }