欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

php文件缓存类

程序员文章站 2024-01-30 12:32:28
...

php文件缓存 PHP ?php/** * 简单的文件缓存类 usage $cache = new XZCache();$key = 'global';$value = $GLOBALS;$cache-saveCache($key, $value);$result = $cache-getCache($key);var_dump($result); * */ class XZCache{// default cache time one hourvar

php文件缓存 PHP
saveCache($key, $value);
	$result = $cache->getCache($key);
	var_dump($result);
	
 *
 */
 
class XZCache{
	// default cache time one hour
	var $cache_time = 3600;
	// default cache dir
	var $cache_dir = './cache';
	
	public function __construct($cache_dir=null, $cache_time=null){
		$this->cache_dir = isset($cache_dir) ? $cache_dir : $this->cache_dir;
		$this->cache_time = isset($cache_time) ? $cache_time : $this->cache_time;
	}

	public function saveCache ($key, $value){
		if (is_dir($this->cache_dir)){
			$cache_file = $this->cache_dir . '/xzcache_' . md5($key);
			$timedif = @(time() - filemtime($cache_file));
			if ($timedif >= $this->cache_time) {
				// cached file is too old, create new
				$serialized = serialize($value);
				if ($f = @fopen($cache_file, 'w')) {
					fwrite ($f, $serialized, strlen($serialized));
					fclose($f);
				}
			}
			$result = 1;
		}else{
			echo "Error:dir is not exist.";
			$result = 0;
		}
		return $result;
	}
	
	/**
	 * @return array 
	 * 			0 no cache
	 *				1 cached
	 *				2 overdue
	 */
	public function getCache ($key) {
		$cache_file = $this->cache_dir . '/xzcache_' . md5($key);
		if (is_dir($this->cache_dir) && is_file($cache_file)) {
			$timedif = @(time() - filemtime($cache_file));
			if ($timedif >= $this->cache_time) {
				$result['cached'] = 2;
			}else{
				// cached file is fresh enough, return cached array
				$result['value'] = unserialize(file_get_contents($cache_file));
				$result['cached'] = 1;
			}
		}else {
			echo "Error:no cache";
			$result['cached'] = 0;
		}
		return $result;
	}
} //end of class