很多的开源cms系统都有一键清除缓存的功能,缓存是为了减轻服务器的压力而产生的,但是同时有缓存的存在也可能使一些数据不能实时更新,对此,我们就来实现一个ThinkPHP的清理缓存的功能。代码如下:
ThinkPHP后台执行的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
//获取要清楚的目录和目录所在的绝对路径
public function cache(){
////前台用ajax get方式进行提交的,这里是先判断一下
if ( $_POST [ 'type' ]){
//得到传递过来的值
$type = $_POST [ 'type' ];
//将传递过来的值进行切割,我是用“-”进行切割的
$name = explode ( '-' , $type );
//得到切割的条数,便于下面循环
$count = count ( $name );
//循环调用上面的方法
for ( $i =0; $i < $count ; $i ++){
//得到文件的绝对路径
$abs_dir =dirname(dirname(dirname(dirname( __FILE__ ))));
//组合路径
$pa = $abs_dir . 'indexRuntime' ;
$runtime = $abs_dir . 'indexRuntime~runtime.php' ;
if ( file_exists ( $runtime )) //判断 文件是否存在
{
unlink( $runtime ); //进行文件删除
}
//调用删除文件夹下所有文件的方法
$this ->rmFile( $pa , $name [ $i ]);
}
//给出提示信息
$this ->ajaxReturn(1, '清除成功' ,1);
} else {
$this ->display();
}
}
public function rmFile( $path , $fileName ){ //删除执行的方法
//去除空格
$path = preg_replace( '/(/){2,}|{}{1,}/' , '/' , $path );
//得到完整目录
$path .= $fileName ;
//判断此文件是否为一个文件目录
if ( is_dir ( $path )){
//打开文件
if ( $dh = opendir( $path )){
//遍历文件目录名称
while (( $file = readdir( $dh )) != false){
//逐一进行删除
unlink( $path . '' . $file );
}
//关闭文件
closedir ( $dh );
}
}
}
|
前台页面部分代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
< script type = "text/javascript" src = "__PUBLIC__/admin/js/jquery.js" ></ script >
< script type = "test/javascript" >
$(function(){
$('#button').click(function(){
if(confirm("确认要清除缓存?")){
var $type=$('#type').val();
var $mess=$('#mess');
$.post('__URL__/clear',{type:$type},function(data){
alert("缓存清理成功");
});
}else{
return false;
}
});
});
</ script >
|