aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoricewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>2008-03-20 12:40:31 +0000
committericewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>2008-03-20 12:40:31 +0000
commitae5e13c17464581fa9fecb45ed846adbc69d2490 (patch)
tree4c7ea7eff0d3ce07bbc2d2f8673a2b4e9894c502
parentd8f325d0979a97932a7d5ebba0d9c2ccd8dcf6f3 (diff)
downloadelgg-ae5e13c17464581fa9fecb45ed846adbc69d2490.tar.gz
elgg-ae5e13c17464581fa9fecb45ed846adbc69d2490.tar.bz2
Marcus Povey <marcus@dushka.co.uk>
* Age checking on cache. git-svn-id: https://code.elgg.org/elgg/trunk@257 36083f99-b078-4883-b0ff-0f9b5a30f544
-rw-r--r--engine/lib/cache.php33
1 files changed, 32 insertions, 1 deletions
diff --git a/engine/lib/cache.php b/engine/lib/cache.php
index 94637142e..2c7cf4604 100644
--- a/engine/lib/cache.php
+++ b/engine/lib/cache.php
@@ -117,7 +117,7 @@
// if (!mkdir($path, 0700, true)) throw new IOException("Could not make $path");
// Open the file
- if (!file_exists($path . $filename)) return false;
+ if ((!file_exists($path . $filename)) && ($rw=="rb")) return false;
return fopen($path . $filename, $rw);
}
@@ -166,6 +166,37 @@
public function __destruct()
{
// TODO: Check size and age, clean up accordingly
+ $size = 0;
+ $dir = $this->get_variable("cache_path");
+
+ // Short circuit if both size and age are unlimited
+ if (($this->get_variable("max_age")==0) && ($this->get_variable("max_size")==0))
+ return;
+
+ $exclude = array(".","..");
+
+ $files = scandir($dir);
+
+ // Perform cleanup
+ foreach ($files as $f)
+ {
+ if (!in_array($f, $exclude))
+ {
+ $stat = stat($dir.$f);
+
+ // Add size
+ $size .= $stat['size'];
+
+ // Is this older than my maximum date?
+ if (($this->get_variable("max_age")>0) && (time() - $stat['mtime'] > $this->get_variable("max_age")))
+ unlink($dir.$f);
+
+
+
+ // TODO: Size
+
+ }
+ }
}
}
?> \ No newline at end of file