public function __invoke(MigrationContext $context) { $container = $context->getContainer(); $working_directory = $container['working_directory']; $repository_sub_folders = glob($working_directory . '/*', GLOB_ONLYDIR); foreach ($repository_sub_folders as $repository_sub_folder) { $old_cache_files = glob($repository_sub_folder . '/*.cache'); $new_cache_files = glob($repository_sub_folder . '/*_D*.cache'); $cache_files = array_diff($old_cache_files, $new_cache_files); foreach ($cache_files as $cache_file) { $cache = new FileCacheStorage($cache_file); $cache_content = $cache->get(); $cache_expires_on = $cache_content['expiration']; if (!isset($cache_expires_on)) { $cache_content['duration'] = null; } else { $cache_content['duration'] = $this->getDateDiff(filemtime($cache_file), $cache_expires_on); } $cache->set($cache_content); $filename_suffix = 'D' . (isset($cache_content['duration']) ? $cache_content['duration'] : 'INF'); $new_cache_file = str_replace('.cache', '_' . $filename_suffix . '.cache', $cache_file); if (file_exists($new_cache_file)) { unlink($cache_file); } else { rename($cache_file, $new_cache_file); } } } }
public function testSomethingToInvalidate() { $this->cache->set(array('key' => 'value')); $this->cache->invalidate(); $this->assertFileNotExists($this->cacheFile); }