Fixes #4820: Fixed reading incomplete debug index data in case of high request concurrency

This commit is contained in:
Alexander Makarov
2014-12-17 01:58:29 +03:00
parent 2aa3949963
commit c808932c24
2 changed files with 12 additions and 2 deletions

View File

@ -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 = [];