summaryrefslogtreecommitdiffstats
path: root/lib/private/legacy/helper.php
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2017-01-23 14:52:50 +0100
committerRobin Appelman <robin@icewind.nl>2017-01-23 14:52:50 +0100
commite38a9786232573218cd862d3483f8465d1d01fd9 (patch)
treefc4132a2eaa54190a4cb7dfbfe614f7648ac354c /lib/private/legacy/helper.php
parent5d486478d3d6d316b1895ea440a05f31488e2f9f (diff)
downloadnextcloud-server-e38a9786232573218cd862d3483f8465d1d01fd9.tar.gz
nextcloud-server-e38a9786232573218cd862d3483f8465d1d01fd9.zip
cache the storage info for 5 min
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'lib/private/legacy/helper.php')
-rw-r--r--lib/private/legacy/helper.php33
1 files changed, 28 insertions, 5 deletions
diff --git a/lib/private/legacy/helper.php b/lib/private/legacy/helper.php
index 9c4bc895fb9..9f3cf8ea69d 100644
--- a/lib/private/legacy/helper.php
+++ b/lib/private/legacy/helper.php
@@ -52,6 +52,7 @@ class OC_Helper {
/**
* Creates an absolute url for public use
+ *
* @param string $service id
* @param bool $add_slash
* @return string the url
@@ -62,13 +63,14 @@ class OC_Helper {
if ($service === 'files') {
$url = OC::$server->getURLGenerator()->getAbsoluteURL('/s');
} else {
- $url = OC::$server->getURLGenerator()->getAbsoluteURL(OC::$server->getURLGenerator()->linkTo('', 'public.php').'?service='.$service);
+ $url = OC::$server->getURLGenerator()->getAbsoluteURL(OC::$server->getURLGenerator()->linkTo('', 'public.php') . '?service=' . $service);
}
return $url . (($add_slash && $service[strlen($service) - 1] != '/') ? '/' : '');
}
/**
* Make a human file size
+ *
* @param int $bytes file size in bytes
* @return string a human readable file size
*
@@ -104,6 +106,7 @@ class OC_Helper {
/**
* Make a php file size
+ *
* @param int $bytes file size in bytes
* @return string a php parseable file size
*
@@ -130,6 +133,7 @@ class OC_Helper {
/**
* Make a computer file size
+ *
* @param string $str file size in human readable format
* @return float a file size in bytes
*
@@ -172,6 +176,7 @@ class OC_Helper {
/**
* Recursive copying of folders
+ *
* @param string $src source folder
* @param string $dest target folder
*
@@ -194,6 +199,7 @@ class OC_Helper {
/**
* Recursive deletion of folders
+ *
* @param string $dir path to the folder
* @param bool $deleteSelf if set to false only the content of the folder will be deleted
* @return bool
@@ -393,6 +399,7 @@ class OC_Helper {
/**
* performs a search in a nested array
+ *
* @param array $haystack the array to be searched
* @param string $needle the search string
* @param string $index optional, only search this key name
@@ -425,7 +432,7 @@ class OC_Helper {
* @return int number of bytes representing
*/
public static function maxUploadFilesize($dir, $freeSpace = null) {
- if (is_null($freeSpace) || $freeSpace < 0){
+ if (is_null($freeSpace) || $freeSpace < 0) {
$freeSpace = self::freeSpace($dir);
}
return min($freeSpace, self::uploadLimit());
@@ -443,7 +450,7 @@ class OC_Helper {
$freeSpace = max($freeSpace, 0);
return $freeSpace;
} else {
- return (INF > 0)? INF: PHP_INT_MAX; // work around https://bugs.php.net/bug.php?id=69188
+ return (INF > 0) ? INF : PHP_INT_MAX; // work around https://bugs.php.net/bug.php?id=69188
}
}
@@ -510,7 +517,7 @@ class OC_Helper {
if (empty($paths)) {
$paths = '/usr/local/bin /usr/bin /opt/bin /bin';
} else {
- $paths = str_replace(':',' ',getenv('PATH'));
+ $paths = str_replace(':', ' ', getenv('PATH'));
}
$command = 'find ' . $paths . ' -name ' . escapeshellarg($program) . ' 2> /dev/null';
exec($command, $output, $returnCode);
@@ -533,6 +540,11 @@ class OC_Helper {
* @throws \OCP\Files\NotFoundException
*/
public static function getStorageInfo($path, $rootInfo = null) {
+ $memcache = \OC::$server->getMemCacheFactory()->create('storageInfo');
+ $cached = $memcache->get($rootInfo ? '__root__' : $path);
+ if (is_array($cached)) {
+ return $cached;
+ }
// return storage info without adding mount points
$includeExtStorage = \OC::$server->getSystemConfig()->getValue('quota_include_external_storage', false);
@@ -597,10 +609,20 @@ class OC_Helper {
$ownerId = $storage->getOwner($path);
$ownerDisplayName = '';
$owner = \OC::$server->getUserManager()->get($ownerId);
- if($owner) {
+ if ($owner) {
$ownerDisplayName = $owner->getDisplayName();
}
+ $memcache->set($rootInfo ? '__root__' : $path, [
+ 'free' => $free,
+ 'used' => $used,
+ 'quota' => $quota,
+ 'total' => $total,
+ 'relative' => $relative,
+ 'owner' => $ownerId,
+ 'ownerDisplayName' => $ownerDisplayName,
+ ], 5 * 60);
+
return [
'free' => $free,
'used' => $used,
@@ -645,6 +667,7 @@ class OC_Helper {
/**
* Returns whether the config file is set manually to read-only
+ *
* @return bool
*/
public static function isReadOnlyConfigEnabled() {