Get("variable_with_id", 60); if (!$variable) { // Cache file expired or is inexistant // Do something to get new data $cache->Set("variable_with_id", $newdata); $variable = $newdata; } echo $variable; **/ class cache { // Where things are cached to (must have trailing slash!) var $cacheDir = "../cache/phpcache/"; // How long to cache something for in seconds, default 1hr var $defaultCacheLife = "3600"; function __construct() { //global $config; $this->cacheDir = ROOT_PATH . $this->cacheDir; } /** Set($varId, $varValue) -- Creates a file named "cache.VARID.TIMESTAMP" and fills it with the serialized value from $varValue. If a cache file with the same varId exists, Delete() will remove it. **/ function Set($varId, $varValue) { global $config; if ($config ['debug'] == 1) { add_debug ( "recache: " . $varId . " = " . $varValue ); } // Clean up old caches with same varId // $this->Delete($varId); // Create new file // $fileHandler = fopen($this->cacheDir . "cache." . $varId . "." . time(), "a"); $file = $this->cacheDir . "cache." . $varId; //echo $file.'
'; $fileHandler = fopen ( $file, "w" ); // Write serialized data $s = fwrite ( $fileHandler, serialize ( $varValue ) ); fclose ( $fileHandler ); return $s; } /** Get($varID, $cacheLife) -- Retrives the value inside a cache file specified by $varID if the expiration time (specified by $cacheLife) is not over. If expired, returns FALSE **/ function Get($varId, $cacheLife = "") { global $config; // Set default cache life //$cacheLife = (! empty ( $cacheLife )) ? $cacheLife : $this->defaultCacheLife; if ($cacheLife !== false && $cacheLife != '0' && ! is_numeric ( $cacheLife )) { $cacheLife = $this->defaultCacheLife; } if($cacheLife == 0) { $cacheLife = false; } /* Loop through the directory looking for cache file */ /* $dirHandler = dir($this->cacheDir); while ($file = $dirHandler->read()) { /* Check for cache file with requested varId * / if (preg_match("/cache.$varId.[0-9]/", $file)) { $cacheFileName = explode(".", $file); // Cache file creation time $cacheFileLife = $cacheFileName[2]; // Full location $cacheFile = $this->cacheDir . $file; /* Check to see if cache file has expired or not * / if ( $cacheLife == 0 || (time() - $cacheFileLife) <= $cacheLife) { $fileHandler = fopen($cacheFile, "r"); $varValueResult = fread($fileHandler, filesize($cacheFile)); fclose($fileHandler); // Still good, return unseralized data return unserialize($varValueResult); } else { // Cache expired, break loop break; } } } $dirHandler->close(); */ $file = $this->cacheDir . "cache." . $varId; //echo '
'; if (file_exists ( $file ) && filesize ( $file ) > 0) { if ($cacheLife === false || (time () - filemtime ( $file )) <= $cacheLife) { $fileHandler = fopen ( $file, "r" ); $varValueResult = fread ( $fileHandler, filesize ( $file ) ); fclose ( $fileHandler ); // Still good, return unseralized data return unserialize ( $varValueResult ); } else { if ($config ['debug'] == 1) { //add_debug ( "cache expire: " . $varId . " TimeExpire: " . unix_time ( filectime ( $file ) ) ); } return false; } } else { if ($config ['debug'] == 1) { add_debug ( "cache file not exists! " . $varId ); } return false; } return FALSE; } /** Delete($varId) -- Loops through the cache directory and removes any cache files with the varId specified in $varID **/ function Delete($varId) { /*$dirHandler = dir($this->cacheDir); while ($file = $dirHandler->read()) { if (preg_match("/cache.$varId.[0-9]/", $file)) { unlink($this->cacheDir . $file); // Delete cache file } } $dirHandler->close(); */ $file = $this->cacheDir . "cache." . $varId; if (file_exists ( $file )) { unlink ( $file ); return true; } return false; } } ?>