/**
*备份数据库
*/
public function bakup(){
$type = input('type','sql');//获取需要备份的数据后缀格式
$data = Db::query("SHOW VARIABLES where Variable_name='basedir'");//查询数据库运行路径
$database=include CMF_ROOT."data/conf/database.php";//引入数据库配置文件不同文件路径需要替换哦,可手动填写$database['username']用户名 $database['password']密码->当密码存在特殊字符是需要单引号括起来 $database['database']数据库名称
$time = time();//生成文件名称
$exec=$data[0]['Value']."/bin/mysqldump -u".$database['username']." -p'".$database['password']."' ".$database['database']." > "."uploads/sql/".$time.".".$type;//生成执行命令
exec($exec);//执行命令
$file = filesize ( 'uploads/sql/'.$time.".".$type );//获取文件大小单位字节
$size = trans_byte($file);//转换成单位可忽略
if($size==false){
return json(array('status'=>500,'info'=>"网络错误"));
}else{
$res = Db::name('sql_files')->insert(['file_name'=>$time.".".$type,'type'=>$type,'path'=>'uploads/sql/'.$time.".".$type,'size'=>$size,'create_time'=>date('Y-m-d H:i:s')]);//存储文件信息
if($res!==false){
return json(array('status'=>200,'info'=>'操作成功'));
}else{
return json(array('status'=>500,'info'=>'操作失败,网络错误'));
}
}
}
trans_byte转换单位方法
function trans_byte($byte)
{
$KB = 1024;
$MB = 1024 * $KB;
$GB = 1024 * $MB;
$TB = 1024 * $GB;
if ($byte < $KB) {
return $byte . "B";
} elseif ($byte < $MB) {
return round($byte / $KB, 2) . "KB";
} elseif ($byte < $GB) {
return round($byte / $MB, 2) . "MB";
} elseif ($byte < $TB) {
return round($byte / $GB, 2) . "GB";
} else {
return round($byte / $TB, 2) . "TB";
}
}
tip生成文件若为0字节,请检查数据库密码等信息,若无问题,检查数据库运行路径