慕容的工作随笔

慕容的工作随笔

记录学习和工作

ThinkPHP 5.1 添加一键清除缓存功能 转

转自https://www.cnblogs.com/panziwen/p/12566565.html

第一步:

由于ThinkPHP 5.1 取消了所有的系统常量,所以我们先定义一个常量用来放系统运行时目录的路径(也就是runtime目录)。

打开config/cache.php配置文件,添加如下代码:

    //自定义runtime_path常量
    'runtime_path'  => '../runtime',

第二步:

在公共文件application/common.php中建立一个公共函数,代码如下:
复制代码
<?php
// 应用公共文件

//清理缓存函数
if (!function_exists(‘delete_dir_file’))
{
/**
* 循环删除目录和文件
* @param string $dir_name
* @return bool
*/
function delete_dir_file($dir_name) {
$result = false;
if(is_dir($dir_name)){
if ($handle = opendir($dir_name)) {
while (false !== ($item = readdir($handle))) {
if ($item != ‘.’ && $item != ‘..’) {
if (is_dir($dir_name . DIRECTORY_SEPARATOR . $item)) {
delete_dir_file($dir_name . DIRECTORY_SEPARATOR . $item);
} else {
unlink($dir_name . DIRECTORY_SEPARATOR . $item);
}
}
}
closedir($handle);
if (rmdir($dir_name)) {
$result = true;
}
}
}
return $result;
}
}

复制代码

第三步:

在模块的控制器中添加一个方法 clear_all() ,代码如下:
复制代码
/*** 清除所有缓存 ***/
public function clear_all() {
    $CACHE_PATH = config('cache.runtime_path').'/cache/';
    $TEMP_PATH = config('cache.runtime_path').'/temp/';
    $LOG_PATH = config('cache.runtime_path').'/log/';
    if (delete_dir_file($CACHE_PATH) && delete_dir_file($TEMP_PATH) && delete_dir_file($LOG_PATH)) {
        $this->success('清除缓存成功!');
    } else {
        $this->error('清除缓存失败!');
    }
}
复制代码

第四步:

在Html模板文件文件中添加代码:
<a href="javascript:;" onclick="Clear_All(this)" data-GetUrl="{:url('clear_all')}">清除所有缓存</a>
最后一步就是创建这个链接对应的JS代码了,在Html模板文件的末尾添加如下JS代码:
复制代码
<script src="/jquery/jquery.min.js"></script>
<script type="text/javascript">
  //清除所有缓存
  function Clear_All(obj) {
      var url = obj.getAttribute('data-GetUrl');
      layer.confirm('你确定要清除所有缓存吗?', {icon: 3, title:'提示'},
      function(){
          $.get(url,function(info){
              if(info.code === 1){
                  setTimeout(function () {location.href = info.url;}, 1000);  //清除成功1秒后刷新页面,如果不需要刷新可以注释掉此行。
              }
              //layer.msg(info.msg,{icon:1});
              layer.msg(info.msg);
          });
      },
      function(){});
  }
</script>
复制代码

提示:jquery一定是要在 javascript 之前引入哦。

评论 (0)

还没有评论,来做第一个吧。

发表评论

提交后需管理员审核通过后显示