public function set($key, $value, $expire = '') { $freeSpace = disk_free_space($this->config['path']); $freeSpaceMB = $freeSpace ? floor($freeSpace / 1024 / 1024) : 0; if ($freeSpaceMB < 10) { Axion_log::getinstance()->newMessage('磁盘容量过小,无法存储数据缓存文件', AXION_LOG::WARNING); return false; } $hash = md5($key); $expire = $expire ? $expire : $this->config['expire']; $expire = sprintf('%09d', $expire); $data = serialize($value); self::$_data[$hash] = $data; if (!is_dir($this->config['path'])) { if (!AXION_UTIL_FILE::mkdir($this->config['path'])) { throw new AXION_EXCEPTION('无法创建Cache文件目录:' . $this->config['path']); } } $fileName = $this->genFileName($key); if (IS_SHM && function_exists('gzcompress')) { $data = gzcompress($data, 4); } $data = $expire . $data; $result = file_put_contents($fileName, $data); if ($result) { clearstatcache(); return true; } else { return false; } }
/** * 构造函数 * * 初始化应用程序 */ public function __construct() { /** * 计算应用程序的唯一ID */ self::$uniqueId = md5(APPLICATION_PATH); /** * 定义应用程序程序所需的临时文件目录常量 */ define('DATA_CACHE_PATH', TEMP_PATH . DS . 'axion_' . self::$uniqueId . DS . 'datacache'); define('DB_CACHE_PATH', TEMP_PATH . DS . 'axion_' . self::$uniqueId . DS . 'dbcache'); define('CODE_CACHE_PATH', TEMP_PATH . DS . 'axion_' . self::$uniqueId . DS . 'codecache'); /** * 定义应用程序各个库路径常量 */ define('APP_LIB_PATH', APPLICATION_PATH . DS . 'lib'); define('APP_CONFIG_PATH', APPLICATION_PATH . DS . 'config'); define('APP_CONTROLLER_PATH', APP_LIB_PATH . DS . 'controller'); define('APP_MODEL_PATH', APP_LIB_PATH . DS . 'model'); define('APP_TEMPLATE_PATH', APP_LIB_PATH . DS . 'template'); /** * 加载应用程序配置文件 */ $userConfigFile = APP_CONFIG_PATH . DS . 'config.xml'; if (file_exists($userConfigFile)) { AXION_CONFIG::loadConfigFile($userConfigFile, 'axion', true); } /** * 设置应用程序自动加载目录 */ Axion::addIncludePath(APP_LIB_PATH); //应用程序程序库目录 Axion::addIncludePath(APP_CONTROLLER_PATH); //控制器目录 Axion::addIncludePath(APP_MODEL_PATH); //模型目录 /** * 注册默认错误处理函数 */ $debugLevel = AXION_CONFIG::GET('axion.debug.level'); switch ($debugLevel) { case 1: $level = E_ALL; /** * 确保无法被错误函数捕捉的错误可以打印 */ ini_set('display_errors', 1); break; case 0: $level = E_ERROR | E_PARSE; /** * 部署模式关闭错误信息 */ ini_set('display_errors', 0); break; } /** * 设置程序错误提示开关 */ error_reporting($level); set_error_handler(array($this, 'errorHandler'), $level); /** * 注册程序结束清理函数 */ register_shutdown_function(array($this, 'shutdownHandler')); /** * 注册默认异常处理函数 */ set_exception_handler(array($this, 'exceptionHandler')); /** * 创建应用程序所需的临时文件目录 */ $serverInitDone = true; if (!file_exists(APPLICATION_PATH . DS . 'serverInit.done')) { $tmpDirs = array('data_cache' => DATA_CACHE_PATH, 'db_cache' => DB_CACHE_PATH, 'view_cache' => VIEW_CACHE_PATH, 'code_cache' => CODE_CACHE_PATH); foreach ($tmpDirs as $v) { if (!is_dir($v)) { AXION_UTIL_FILE::mkdir($v, 0755); } } $serverInitDone = false; } define('IS_SERVER_INIT_DONE', $serverInitDone); /** * 开启SESSION支持 */ session_start(); //@todo 暂时开启默认SESSION支持,回头需要改为自定义版本 /** * 设置时区 */ date_default_timezone_set(AXION_CONFIG::get('axion.misc.timezone')); }