{fbmip:fixed type="top" id="mipfixed" dataSlide="header-fixed-slide" class="fb-header-fixed"}
{fbview:mainmenu menuItemCode='$menuItemCode'/}
{/fbmip:fixed}
{fbmip:img fit='cover' src="$banner2['img_url']" alt="$banner2['title']"/}

飞鸟CMS基于命令行实现数据库备份

  • 发布时间:
  • 浏览:379
  • 来源:平步科技官网

飞鸟CMS内置了数据库备份功能。

该功能的核心采用的tp5er的tp-databackup 组件,该组件是开源的,发布在github上。

飞鸟CMS对该组件进行了改造,原功能只能进行单表备份,现可进行全库备份了。该文件放在 extend/tp5er/ 下,有兴趣的开发人员可以自行阅读代码。

备份配置

tp-databackup 需要有配置,飞鸟CMS将配置信息写在了app/config.php下的dbbackup节点上。

备份代码分析

$bc = new Backup(config('dbbackup'));
$file=['name'=>date('Ymd-His'),'part'=>1];
$bc->setFile($file)->backupAll();

可以看到,备份代码增加了一个$file变量,该变量定义了备份文件的格式。可以在备份文件夹下读到。

命令行方式备份

:什么是命令行方式备份?

:在操作系统的命令行界面输入执行命令的方式进行备份,就是命令行方式备份。


:为什么要基于命令行方式备份呢?

:因为数据库备份应该作为每天的定时任务,定时执行备份。但由于php的限制,无法实现单纯的php实现定时任务,所以,只能借助操作系统的定时任务来实现。

在Linux下基于Crontab服务,在windows下基于定时任务服务

飞鸟CMS内置了命令行功能,可以在 项目public文件夹下执行以下语句: php  think  命令名

定义命令行的命令名

刚才看到了,飞鸟CMS执行命令行,需要有一个命令名,下面以备份数据库的功能解释一下飞鸟CMS如何定义命令名。

有兴趣的技术人可以直接查看gitee上的代码

<?php
/**
* Created by PhpStorm.
* User: cuipengyu
* Date: 2018-12-29
* Time: 14:35
*/
namespace app\admin\command;


use think\console\Command;
use think\Db;
use think\Log;
use tp5er\Backup;

class DbBackupTask extends Command
{
protected function configure()
{
$this->setName('dbBackupTask')->setDescription('Now backup database ');
}

protected function execute(Input $input, Output $output)
{

$bc = new Backup(config('dbbackup'));
$file=['name'=>date('Ymd-His'),'part'=>1];
$bc->setFile($file)->backupAll();

}

}

可以看到 configure方法中定义了一个名字为dbBackupTask的命令名,当在public 文件夹下执行  php think  dbBackupTask,就会执行 execute方法了。

注意:还要在 app文件夹下的 command.php文件中加入该类的路径。

return ['app\admin\command\DbBackupTask'];