/** * 循环删除目录和文件函数 * @param string $dirName 路径 * @param boolean $fileFlag 是否删除目录 * @return void */ function del_dir_file($dirName, $bFlag = false) { if ($handle = opendir("{$dirName}")) { while (false !== ($item = readdir($handle))) { if ($item != "." && $item != "..") { if (is_dir("{$dirName}/{$item}")) { del_dir_file("{$dirName}/{$item}", $bFlag); } else { unlink("{$dirName}/{$item}"); } } } closedir($handle); if ($bFlag) { rmdir($dirName); } } }
/** * 清理缓存方法(动态缓存) */ public function do_clearRuntime($dellog = false) { header("Content-Type:text/html; charset=utf-8"); //不然返回中文乱码 //清除缓存 is_dir(DATA_PATH . '_fields/') && del_dir_file(DATA_PATH . '_fields/', false); is_dir(CACHE_PATH) && del_dir_file(CACHE_PATH, false); //模板缓存(混编后的) echo '<p>清除Cache缓存成功!</p>'; is_dir(DATA_PATH) && del_dir_file(DATA_PATH, false); //项目数据(当使用快速缓存函数F的时候,缓存的数据) echo '<p>清除Data缓存成功!</p>'; is_dir(TEMP_PATH) && del_dir_file(TEMP_PATH, false); //项目缓存(当S方法缓存类型为File的时候,这里每个文件存放的就是缓存的数据) echo '<p>清除Temp缓存成功!</p>'; is_dir(LOG_PATH) && del_dir_file(LOG_PATH, false); //项目缓存(当S方法缓存类型为File的时候,这里每个文件存放的就是缓存的数据) echo '<p>清除Logs缓存成功!</p>'; if ($dellog) { is_dir(LOG_PATH) && del_dir_file(LOG_PATH, false); //日志 } is_file(RUNTIME_PATH . APP_MODE . '~runtime.php') && @unlink(RUNTIME_PATH . APP_MODE . '~runtime.php'); //RUNTIME_FILE echo '清除完成'; }
/** * 删除静态缓存文件 * @param string $str 缓存路径 * @param boolean $isdir 是否是目录 * @param string $rules 缓存规则名 * @return mixed */ function del_cache_html($str, $isdir = false, $rules = '') { //为空,且不是目录 $delflag = true; if (empty($str) && !$isdir) { return; } $str_array = array(); //更新静态缓存 $html_cache_rules = get_meta_value('HTML_CACHE_RULES_COMMON'); if (get_meta_value('HOME_HTML_CACHE_ON')) { $str_array[] = HTML_PATH . 'Home/' . $str; } if (get_meta_value('MOBILE_HTML_CACHE_ON')) { $str_array[] = HTML_PATH . 'Mobile/' . $str; } if (!empty($rules) && !isset($html_cache_rules[$rules])) { $delflag = false; //指定规则,如不存在则不用清除 } else { $delflag = true; } if ($delflag) { foreach ($str_array as $v) { if ($isdir && is_dir($v)) { del_dir_file($v, false); } else { $list = glob($v . '*'); for ($i = 0; $i < count($list); $i++) { if (is_file($list[$i])) { unlink($list[$i]); } } } } } }