tp5进行数据库的备份、还原等一系列操作

昨天搞了一下午数据库自动定时备份。但是只能在页面打开的时候才能实现自动定时备份,做不到的关闭浏览器后还能定时定时备份,在网上搜了搜关闭浏览器后自动运行脚本的php函数,但是不起作用……用了windows任务管理器后,由于代码放在了tp框架里,所以文件无法正常运行……o(︶︿︶)o 唉


希望能得到各位大佬的指点~

实现数据库的备份、还原、删除、下载

下载类文件:https://github.com/joytom/db_backup
在这里插入图片描述
控制器实例化该类文件:

<?php
namespace app\index\controller;
use think\Controller;

class Backup extends Controller
{
    //数据库备份
    public function index()
    {   
        //获取操作内容:(备份/下载/还原/删除)数据库
        $type=input('type');
        //获取需要操作的数据库名字
        $name=input('name');
        $backup = new \org\Baksql(\think\Config::get("database"));
        switch ($type) {
        //备份
        case "backup":
            $info = $backup->backup();
            $this->success("$info", 'index/backup/index');
            break;
        //下载
        case "dowonload":
            $info = $backup->downloadFile($name);
            $this->success("$info", 'index/backup/index');
            break;
        //还原
        case "restore":
            $info = $backup->restore($name);
            $this->success("$info", 'index/backup/index');
            break;
        //删除
        case "del":
            $info = $backup->delfilename($name);
            $this->success("$info", 'index/backup/index');
            break;
        //如果没有操作,则查询已备份的所有数据库信息
        default:
             return $this->fetch("index", ["list" => array_reverse($backup->get_filelist())]);//将信息由新到老排序
        }
    
    }

    public function bak()
    {
        echo '来了老弟';
    }
}

视图:

<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<script src="__STATIC__/js/jquery-3.3.1.min.js"></script>
<script src="__STATIC__/js/layer/layer.js"></script>
<script charset="utf-8" src="__STATIC__/utf8-php/ueditor.config.js"></script>
<script charset="utf-8" src="__STATIC__/utf8-php/ueditor.all.min.js"> </script>
<body>

<div class="ibox-content">
    <div class="">
        <a class="btn btn-primary " href="{:url('index',['type'=>'backup'])}"onclick="return confirm('备份数据的时间较长,确定要备份所有数据吗?')"><i class="glyphicon glyphicon-plus"></i> <span class="bold">添加备份</span></a>
    </div>
    <table class="table table-striped table-bordered table-hover dataTables-example"  style="text-align: center">
        <thead>
        <tr>
            <td>序号</td>
            <td>备份名称</td>
            <td>备份时间</td>
            <td>备份大小</td>
            <td>操作</td>
        </tr>
        </thead>
        <tbody>
        {volist name="list" id="vo"}
        <tr class="gradeX" >
            <td>{$key+1}</td>
            <td>{$vo.name}</td>
            <td>{$vo.time}</td>
            <td>{$vo.size}</td>
            <td width="25%">
                <a  href="{:url('index',['type'=>'dowonload','name'=>$vo.name])}" class="btn btn-success "><i class="glyphicon glyphicon-download-alt"></i> <span class="bold">下载</span></a>
                <a  href="{:url('index',['type'=>'restore','name'=>$vo.name])}" class="btn btn-info " onclick="return confirm('备份还原后仅会显示当前备份的数据库的信息,您确定还原备份吗 ?')"><i class="glyphicon glyphicon-repeat"></i> <span class="bold">还原</span></a>
                <a href="{:url('index',['type'=>'del','name'=>$vo.name])}"  class="btn btn-warning" onclick="return confirm('数据库备份一旦删除不可找回,您确定操作吗?')"><i class="fa fa-warning"></i> <span class="bold">删除</span></a>
            </td>
        </tr>
        {/volist}
        </tbody>
    </table>
</div>
</body>
<script type="text/javascript" src="__STATIC__/js/ceshi.php"></script>
<script type="text/javascript">
// setInterval(function(){
//     $.get("{:url('Backup/index')}",{type:'backup',name:'vip'},function(data){
          
//        });
// },3000);
</script>
<!-- {php}
ignore_user_abort(true);
set_time_limit(0);
{/php} -->
</html>

效果展示:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42249896/article/details/85238523