70 lines
2.0 KiB
PHP
Executable File
70 lines
2.0 KiB
PHP
Executable File
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
|
|
// +----------------------------------------------------------------------
|
|
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
|
|
// +----------------------------------------------------------------------
|
|
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
|
|
// +----------------------------------------------------------------------
|
|
namespace app\controller\admin;
|
|
|
|
use app\controller\Admin;
|
|
use think\facade\Db;
|
|
|
|
class Database extends Admin{
|
|
|
|
/**
|
|
* @title 数据备份
|
|
*/
|
|
public function export(){
|
|
$list = Db::query('SHOW TABLE STATUS');
|
|
$list = array_map('array_change_key_case', $list);
|
|
|
|
$this->data['data'] = array(
|
|
'list' => $list
|
|
);
|
|
return $this->data;
|
|
}
|
|
/**
|
|
* @title 数据导入
|
|
*/
|
|
public function import(){
|
|
//列出备份文件列表
|
|
$path = app()->getRuntimePath() . 'backup';
|
|
if (!is_dir($path)) {
|
|
mkdir($path, 0755, true);
|
|
}
|
|
$path = realpath($path);
|
|
$flag = \FilesystemIterator::KEY_AS_FILENAME;
|
|
$glob = new \FilesystemIterator($path, $flag);
|
|
|
|
$list = array();
|
|
foreach ($glob as $name => $file) {
|
|
if (preg_match('/^\d{8,8}-\d{6,6}-\d+\.sql(?:\.gz)?$/', $name)) {
|
|
$name = sscanf($name, '%4s%2s%2s-%2s%2s%2s-%d');
|
|
|
|
$date = "{$name[0]}-{$name[1]}-{$name[2]}";
|
|
$time = "{$name[3]}:{$name[4]}:{$name[5]}";
|
|
$part = $name[6];
|
|
|
|
if (isset($list["{$date} {$time}"])) {
|
|
$info = $list["{$date} {$time}"];
|
|
$info['part'] = max($info['part'], $part);
|
|
$info['size'] = $info['size'] + $file->getSize();
|
|
} else {
|
|
$info['part'] = $part;
|
|
$info['size'] = $file->getSize();
|
|
}
|
|
$extension = strtoupper(pathinfo($file->getFilename(), PATHINFO_EXTENSION));
|
|
$info['compress'] = ($extension === 'SQL') ? '-' : $extension;
|
|
$info['time'] = strtotime("{$date} {$time}");
|
|
|
|
$list["{$date} {$time}"] = $info;
|
|
}
|
|
}
|
|
$this->data['data'] = array(
|
|
'list' => $list
|
|
);
|
|
return $this->data;
|
|
}
|
|
} |