mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-10-30 21:52:00 +01:00
fixes #1300 fall back on exec(du) instead of pure PHP to calculate cache size
This algorithm does not work for Windows and when "exec" is disabled. But not having this cache size is not a major issue. What is a problem is when calculating the cache size breaks the execution, which must be avoided.
This commit is contained in:
1 parent
c97d8930bc
commit
cac24635a9
2 files changed
+11
-7
No files matched your search
@@ -637,13 +637,17 @@ function get_fs_directory_size($path)
|
||||
$bytestotal = 0;
|
||||
$path = realpath($path);
|
||||
|
||||
if ($path !== false && $path != '' && file_exists($path))
|
||||
if (!function_exists('exec'))
|
||||
{
|
||||
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object)
|
||||
{
|
||||
$bytestotal += $object->getSize();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@exec('du -sk '.$path, $returnarray);
|
||||
if (is_array($returnarray) and !empty($returnarray[0]) and preg_match('/^(\d+)\s/', $returnarray[0], $matches))
|
||||
{
|
||||
$bytestotal = $matches[1] * 1024;
|
||||
}
|
||||
|
||||
return $bytestotal;
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -404,8 +404,8 @@ if (isset($result[0]['SUM(filesize)']))
|
||||
$data_storage['Formats'] = $result[0]['SUM(filesize)'];
|
||||
}
|
||||
|
||||
// PHP 5.5.19 is the oldest version get_fs_directory_size was tested on
|
||||
if (version_compare(PHP_VERSION, '5.5.19') >= 0)
|
||||
// Windows can't execute get_fs_directory_size correctly
|
||||
if (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN')
|
||||
{
|
||||
if (!isset($_SESSION['cachedir_info']) or $_SESSION['cachedir_info']['calculated_on'] < strtotime('5 minutes ago'))
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user