mirror of
https://github.com/moodle/moodle.git
synced 2025-04-13 12:32:08 +02:00
Merge branch 'MDL-41291-master' of git://github.com/mr-russ/moodle
This commit is contained in:
commit
51eba172e6
18
cache/stores/file/lib.php
vendored
18
cache/stores/file/lib.php
vendored
@ -353,23 +353,19 @@ class cachestore_file extends cache_store implements cache_is_key_aware, cache_i
|
||||
if (!$readfile) {
|
||||
return false;
|
||||
}
|
||||
// Check the filesize first, likely not needed but important none the less.
|
||||
$filesize = filesize($file);
|
||||
if (!$filesize) {
|
||||
return false;
|
||||
}
|
||||
// Open ensuring the file for writing, truncating it and setting the pointer to the start.
|
||||
// Open ensuring the file for reading in binary format.
|
||||
if (!$handle = fopen($file, 'rb')) {
|
||||
return false;
|
||||
}
|
||||
// Lock it up!
|
||||
// We don't care if this succeeds or not, on some systems it will, on some it won't, meah either way.
|
||||
flock($handle, LOCK_SH);
|
||||
// HACK ALERT
|
||||
// There is a problem when reading from the file during PHPUNIT tests. For one reason or another the filesize is not correct
|
||||
// Doesn't happen during normal operation, just during unit tests.
|
||||
// Read it.
|
||||
$data = fread($handle, $filesize+128);
|
||||
$data = '';
|
||||
// Read the data in 1Mb chunks. Small caches will not loop more than once. We don't use filesize as it may
|
||||
// be cached with a different value than what we need to read from the file.
|
||||
do {
|
||||
$data .= fread($handle, 1048576);
|
||||
} while (!feof($handle));
|
||||
// Unlock it.
|
||||
flock($handle, LOCK_UN);
|
||||
// Return it unserialised.
|
||||
|
Loading…
x
Reference in New Issue
Block a user