www.gusucode.com > 高端企业门户+论坛网站源码程序 > 整站安装/整站源码/source/class/cache/cache_file.php
<?php /** * [Discuz!] (C)2001-2099 Comsenz Inc. * This is NOT a freeware, use is subject to license terms * * $Id: cache_file.php 6757 2010-03-25 09:01:29Z cnteacher $ */ if(!defined('IN_DISCUZ')) { exit('Access Denied'); } class ultrax_cache { function ultrax_cache($conf) { $this->conf = $conf; } function get_cache($key) { if($this->cache_exists($key)) { $data = $this->_get_cache($key); return $data['data']; } return false; } function set_cache($key, $value, $life) { global $_G; $data = array($key => array('data' => $value, 'life' => $life)); require_once libfile('function/cache'); $cache_file = $this->get_cache_file_path($key); dmkdir(dirname($cache_file)); $cachedata = "\$data = ".arrayeval($data).";\n"; if($fp = @fopen($cache_file, 'wb')) { fwrite($fp, "<?php\n//Discuz! cache file, DO NOT modify me!". "\n//Created: ".date("M j, Y, G:i"). "\n//Identify: ".md5($cache_file.$cachedata.$_G['config']['security']['authkey'])."\n\nif(!defined('IN_DISCUZ')) {\n\texit('Access Denied');\n}\n\n$cachedata?>"); fclose($fp); } else { exit('Can not write to cache files, please check directory ./data/ and ./data/ultraxcache/ .'); } return true; } function del_cache($key) { $cache_file = $this->get_cache_file_path($key); if(file_exists($cache_file)) { return @unlink($cache_file); } return true; } function _get_cache($key) { static $data = null; if(!isset($data[$key])) { include $this->get_cache_file_path($key); } return $data[$key]; } function cache_exists($key) { $cache_file = $this->get_cache_file_path($key); if(!file_exists($cache_file)) { return false; } $data = $this->_get_cache($key); if($data['life'] && (filemtime($cache_file) < time() - $data['life'])) { return false; } return true; } function get_cache_file_path($key) { static $cache_path = null; if(!isset($cache_path[$key])) { $dir = hexdec($key{0}.$key{1}.$key{2}) % 1000; $cache_path[$key] = $this->conf['path'].'/'.$dir.'/'.$key.'.php'; } return $cache_path[$key]; } }