diff options
author | John Molakvoæ <skjnldsv@users.noreply.github.com> | 2022-04-22 08:15:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-22 08:15:40 +0200 |
commit | 3f55108227287f780623115662edfcfa28a5f745 (patch) | |
tree | 50eda7baddd586f828857cf205b20e07cf0ec13c /lib | |
parent | 9a1a14d563659b2143e2eff6f050c21503c0b3c9 (diff) | |
parent | bdfef2dbd1872f1895ec88bd8879a252f4d147b7 (diff) | |
download | nextcloud-server-3f55108227287f780623115662edfcfa28a5f745.tar.gz nextcloud-server-3f55108227287f780623115662edfcfa28a5f745.zip |
Merge pull request #32048 from nextcloud/cache-storage-info
cache storage info in memcache for 5m
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/legacy/OC_Helper.php | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/lib/private/legacy/OC_Helper.php b/lib/private/legacy/OC_Helper.php index 547ffef8607..68fb4311ef8 100644 --- a/lib/private/legacy/OC_Helper.php +++ b/lib/private/legacy/OC_Helper.php @@ -44,7 +44,9 @@ * */ use bantu\IniGetWrapper\IniGetWrapper; +use OC\Files\Filesystem; use OCP\Files\Mount\IMountPoint; +use OCP\ICacheFactory; use OCP\IUser; use Symfony\Component\Process\ExecutableFinder; @@ -486,9 +488,20 @@ class OC_Helper { * @throws \OCP\Files\NotFoundException */ public static function getStorageInfo($path, $rootInfo = null, $includeMountPoints = true) { + /** @var ICacheFactory $cacheFactory */ + $cacheFactory = \OC::$server->get(ICacheFactory::class); + $memcache = $cacheFactory->createLocal('storage_info'); + // return storage info without adding mount points $includeExtStorage = \OC::$server->getSystemConfig()->getValue('quota_include_external_storage', false); + $fullPath = Filesystem::getView()->getAbsolutePath($path); + $cacheKey = $fullPath. '::' . ($includeMountPoints ? 'include' : 'exclude'); + $cached = $memcache->get($cacheKey); + if ($cached) { + return $cached; + } + if (!$rootInfo) { $rootInfo = \OC\Files\Filesystem::getFileInfo($path, $includeExtStorage ? 'ext' : false); } @@ -559,7 +572,7 @@ class OC_Helper { [,,,$mountPoint] = explode('/', $mount->getMountPoint(), 4); } - return [ + $info = [ 'free' => $free, 'used' => $used, 'quota' => $quota, @@ -570,6 +583,10 @@ class OC_Helper { 'mountType' => $mount->getMountType(), 'mountPoint' => trim($mountPoint, '/'), ]; + + $memcache->set($cacheKey, $info, 5 * 60); + + return $info; } /** |