From a8f8f22fb0f291fe76c2248750c81874b7572b9a Mon Sep 17 00:00:00 2001 From: Romain d'Alverny Date: Mon, 11 Jun 2012 12:15:13 +0000 Subject: new NCache class --- lib.php | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/lib.php b/lib.php index 28b72cf..600f97d 100644 --- a/lib.php +++ b/lib.php @@ -1,6 +1,112 @@ _path = $path; + $i->_timeout = $timeout; + + return $i; + } + + /** + * Get value for $key. + * + * @param mixed $key + * + * @return mixed + */ + function get($key = null) + { + if (is_null($key)) + return false; + + $filename = $this->_get_filename($key); + + if ($this->_is_valid_file($filename, $this->_timeout)) { + return unserialize(file_get_contents($filename)); + } + + return null; + } + + /** + * Save $value under $key. + * + * @param mixed $key + * @param mixed $value + */ + function set($key, $value) + { + if (is_null($key)) + return false; + + $filename = $this->_get_filename($key); + file_put_contents($filename, serialize($value)); + + return true; + } + + /** + * Get cache file from key. + * + * @param mixed $key + * + * @return string + */ + private function _get_filename($key) + { + $key = hash('sha1', serialize($key)); + + return $this->_path . '/' . $key . '.cache'; + } + + /** + * Check that the cache file exists and has not expired. + * + * @param string $filename + * + * @return boolean + */ + private function _is_valid_file($filename, $timeout) + { + if (!file_exists($filename)) { + //error_log(sprintf('Could not find %s', $filename), 0); + return false; + } + + if (filemtime($filename) + $timeout < time()) { + //error_log(sprintf('%s timestamp expired (timeout was %ds.).', $filename, $timeout)); + unlink($filename); + return false; + } + + //error_log(sprintf('Found %s', $filename)); + return true; + } +} + class l10n { public static $t; -- cgit v1.2.1