public FileCache::getMultiple(array $filepaths)
Gets data based on filenames.
Parameters
string[] $filepaths: List of file paths used as cache identifiers.
Return value
array List of cached data keyed by the passed in file paths.
Overrides FileCacheInterface::getMultiple
File
- core/lib/Drupal/Component/FileCache/FileCache.php, line 77
Class
- FileCache
- Allows to cache data based on file modification dates.
Namespace
Drupal\Component\FileCache
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | public function getMultiple( array $filepaths ) { $file_data = []; $remaining_cids = []; // First load from the static cache what we can. foreach ( $filepaths as $filepath ) { if (! file_exists ( $filepath )) { continue ; } $realpath = realpath ( $filepath ); // If the file exists but realpath returns nothing, it is using a stream // wrapper, those are not supported. if ( empty ( $realpath )) { continue ; } $cid = $this ->prefix . ':' . $this ->collection . ':' . $realpath ; if (isset( static :: $cached [ $cid ]) && static :: $cached [ $cid ][ 'mtime' ] == filemtime ( $filepath )) { $file_data [ $filepath ] = static :: $cached [ $cid ][ 'data' ]; } else { // Collect a list of cache IDs that we still need to fetch from cache // backend. $remaining_cids [ $cid ] = $filepath ; } } // If there are any cache IDs left to fetch from the cache backend. if ( $remaining_cids && $this ->cache) { $cache_results = $this ->cache->fetch( array_keys ( $remaining_cids )) ? : []; foreach ( $cache_results as $cid => $cached ) { $filepath = $remaining_cids [ $cid ]; if ( $cached [ 'mtime' ] == filemtime ( $filepath )) { $file_data [ $cached [ 'filepath' ]] = $cached [ 'data' ]; static :: $cached [ $cid ] = $cached ; } } } return $file_data ; } |
Please login to continue.