结合网上资料与自己不断实践,终于把这个问题克服下来,现把相关心得简要总结如下:
[TOC]
## 通用函数申明
### 1、清空数据缓存
```
/**
* 清空数据缓存 不删出cache目录
* 2018.10.22 By wyb
*/
function clear_file_cache($path) {
$dh = opendir($path);
while (($file = readdir($dh)) !== false ) {
if ($file != "." && $file != "..") {
$fullpath = $path . $file;
if (!is_dir($fullpath)) {
array_map( 'unlink', glob($fullpath));
//echo '【删除文件】'.$fullpath ;
} else {
//echo '【文件夹】'.$fullpath ;
$newpath = $fullpath . DS;
clear_file_cache($newpath);
@rmdir($newpath);
}
}
}
closedir($dh);
return true;
//删除当前文件夹:
//if(rmdir($path)) {
//return true;
//} else {
//return false;
//}
}
```
### 2、清空模板缓存
```
/**
* 清除模板缓存 不删除 temp目录
* 2018.10.22 By wyb
*/
function clear_tmp_cache($path) {
if(array_map('unlink', glob( $path.'*.php' ))){
return true;
} else {
return false;
}
}
```
### 3、清空日志缓存
```
/**
* 清除日志缓存 不删出log目录
* 2018.10.22 By wyb
*/
function clear_log_cache($path) {
$dh = opendir($path);
while (($file = readdir($dh)) !== false ) {
if ($file != "." && $file != "..") {
$fullpath = $path . $file;
if (!is_dir($fullpath)) {
array_map( 'unlink', glob($fullpath));
//echo '【删除文件】'.$fullpath ;
} else {
//echo '【文件夹】'.$fullpath ;
$newpath = $fullpath . DS;
clear_log_cache($newpath);
@rmdir($newpath);
}
}
}
closedir($dh);
return true;
//删除当前文件夹:
//if(rmdir($path)) {
//return true;
//} else {
//return false;
//}
}
```
## 函数调用
### 1、清除模板缓存
```
/**
* 清除模板缓存 不删除 temp目录
* 2018.10.22 By wyb
*/
public function clear_tmp() {
$path = TEMP_PATH;
if(clear_tmp_cache($path)){
return success('成功清除模板缓存');
}else{
return success('清除模板缓存失败');
}
}
```
### 2、清除数据缓存
```
/**
* 清除数据缓存 不删除 cache目录
* 2018.10.22 By wyb
*/
public function clear_cache() {
$path = CACHE_PATH;
if(is_dir($path)){
if(@clear_file_cache($path)){
return success('成功清空文件缓存');
}else{
return error('清空文件缓存失败');
}
}else{
return error('文件缓存为空');
}
}
```
### 3、清除日志缓存
```
/**
* 清除日志缓存 不删除 log目录
* 2018.10.22 By wyb
*/
public function clear_log() {
$path = LOG_PATH;
if(is_dir($path)){
if(@clear_log_cache($path)){
return success('成功清除日志缓存');
}else{
return error('清除日志失败');
}
}else{
return error('日志为空');
}
}
```
### 4、一键清空缓存
```
/**
* 一键清空数据缓存cache、模板缓存tmp,不删除 cache、tmp相关目录
* 2018.10.22 By wyb
*/
public function clearAll() {
// 首先,清空模板缓存tmp
$path = TEMP_PATH;
if(!@clear_tmp_cache($path)){
return error('清除模板缓存失败');
}
// 其次,清空数据缓存cache
$c_path = CACHE_PATH;
if(!@clear_file_cache($c_path)){
return error('清空文件缓存失败');
}
// 最后,信息提示
return success('一键清空缓存成功');
}
```