From: Bart Visscher Date: Tue, 28 Aug 2012 21:07:09 +0000 (+0200) Subject: Clean user cache on login X-Git-Tag: v4.5.0beta1~9 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=53e51fe46b3a78b117bd43de922c0fea67d49670;p=nextcloud-server.git Clean user cache on login --- diff --git a/lib/base.php b/lib/base.php index af860027c1d..d3f3c5ba1c6 100644 --- a/lib/base.php +++ b/lib/base.php @@ -346,8 +346,9 @@ class OC{ } } - // register cache cleanup + // register cache cleanup jobs OC_BackgroundJob_RegularTask::register('OC_Cache_FileGlobal', 'gc'); + OC_Hook::connect('OC_User', 'post_login', 'OC_Cache_File', 'loginListener'); // Check for blacklisted files OC_Hook::connect('OC_Filesystem','write','OC_Filesystem','isBlacklisted'); diff --git a/lib/cache/file.php b/lib/cache/file.php index 562c3d17167..7298ba9074c 100644 --- a/lib/cache/file.php +++ b/lib/cache/file.php @@ -74,4 +74,25 @@ class OC_Cache_File{ } return true; } + + public function gc() { + $storage = $this->getStorage(); + if($storage and $storage->is_dir('/')) { + $now = time(); + $dh=$storage->opendir('/'); + while($file=readdir($dh)) { + if($file!='.' and $file!='..') { + $mtime = $storage->filemtime('/'.$file); + if ($mtime < $now) { + $storage->unlink('/'.$file); + } + } + } + } + } + + public static function loginListener() { + $c = new self(); + $c->gc(); + } }