diff --git a/extensions/debug/CHANGELOG.md b/extensions/debug/CHANGELOG.md index 9207c4544e..e4e81598c0 100644 --- a/extensions/debug/CHANGELOG.md +++ b/extensions/debug/CHANGELOG.md @@ -4,7 +4,7 @@ Yii Framework 2 debug extension Change Log 2.0.2 under development ----------------------- -- no changes in this release. +- Bug #4820: Fixed reading incomplete debug index data in case of high request concurrency (martingeorg, samdark) 2.0.1 December 07, 2014 diff --git a/extensions/debug/controllers/DefaultController.php b/extensions/debug/controllers/DefaultController.php index 62381aeabd..57849c907d 100644 --- a/extensions/debug/controllers/DefaultController.php +++ b/extensions/debug/controllers/DefaultController.php @@ -118,7 +118,17 @@ class DefaultController extends Controller clearstatcache(); } $indexFile = $this->module->dataPath . '/index.data'; - if (is_file($indexFile) && is_readable($indexFile) && ($content = file_get_contents($indexFile)) !== false) { + + $content = ''; + $fp = @fopen($indexFile, 'r'); + if ($fp !== false) { + @flock($fp, LOCK_SH); + $content = fread($fp, filesize($indexFile)); + @flock($fp, LOCK_UN); + fclose($fp); + } + + if ($content !== '') { $this->_manifest = array_reverse(unserialize($content), true); } else { $this->_manifest = [];