diff --git a/src/Symfony/Component/Config/Resource/DirectoryResource.php b/src/Symfony/Component/Config/Resource/DirectoryResource.php index 7ae5694ff0..6fe36793e1 100644 --- a/src/Symfony/Component/Config/Resource/DirectoryResource.php +++ b/src/Symfony/Component/Config/Resource/DirectoryResource.php @@ -68,7 +68,10 @@ class DirectoryResource implements ResourceInterface, \Serializable return false; } - $newestMTime = filemtime($this->resource); + if ($timestamp <= filemtime($this->resource)) { + return false; + } + foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($this->resource), \RecursiveIteratorIterator::SELF_FIRST) as $file) { // if regex filtering is enabled only check matching files if ($this->pattern && $file->isFile() && !preg_match($this->pattern, $file->getBasename())) { @@ -81,10 +84,13 @@ class DirectoryResource implements ResourceInterface, \Serializable continue; } - $newestMTime = max($file->getMTime(), $newestMTime); + // early return if a file's mtime exceeds the passed timestamp + if ($timestamp <= $file->getMTime()) { + return false; + } } - return $newestMTime < $timestamp; + return true; } public function serialize()