public function db_download(){
$filename = I('sql');
//执行资源下载
// header("Content-Type:xls");// 接收类型
header("Content-Disposition:attachment;filename={$filename}");// 接收为 附件
// header("Content-Length:{$filesize}");// 接受大小
readfile("./Public/sql/{$filename}");// 输出文件
}
public function localsql(){
if(!empty($_FILES['sqlpath']['tmp_name'])){
$config = array(
'savePath' => './Public/sql/',
'saveRule' => date ('Y-m-d.H-i-s.') .rand(100,999),
);
import('ORG.Net.UploadFile');
$Upload = new UploadFile($config);
$rst = $Upload -> uploadOne($_FILES['sqlpath']);
if(!$rst){
dump( $Upload -> getErrorMsg() );
}else{
$sqlname = $rst[0]['savename'];
$path = './Public/sql/';
$cmd = 'mysql -h'.C('DB_HOST').' -u'.C('DB_USER').' -p'.C('DB_PWD').' '.C('DB_NAME').' < '.$path.$sqlname;
exec($cmd,$arr,$flag);
unlink($path.$sqlname);
if($flag == 0){
$this->redirect('Config/db_recover','',0.01,'<script>alert("导入成功");</script>');
}else{
$this->redirect('Config/db_recover','',0.01,'<script>alert("导入失败");</script>');
}
}
}
}
// db恢复
public function db_recover(){
if(!empty($_POST)){
$path = './Public/sql/';
$Back = D('backup');
$id = I('post.id');
$data=$Back->select();
$sqlname = $Back -> where('id = ' . $id) -> getfield('sqlname');
$cmd = 'mysql -h'.C('DB_HOST').' -u'.C('DB_USER').' -p'.C('DB_PWD').' '.C('DB_NAME').' < '.$path.$sqlname;
exec($cmd,$arr,$flag);
if($flag == 0){
foreach($data as &$v){
$Back->save($v);
unset($v);
}
$this -> redirect('Config/db_recover' , '' , 0.01 , '<script>alert("导入成功");</script>');
}else{
$this -> redirect('Config/db_recover' , '' , 0.01 , '<script>alert("导入失败");</script>');
}
}else{
$this -> getdb(1);
$this -> getdb(2);
$this -> getdb(3);
$this -> getdb(4);
$this -> getdb(5);
$this -> getdb(6);
$this -> getdb(7);
$this->display();
}
}
// 数据库备份
public function db_backup(){
if(!empty($_POST)){
set_time_limit(0);
$path = APP_ROOT.'/Public/sql/';
// dump($path);
$Back = D('backup');
$_POST['sqlname'] = date('Y-m-d--H-i-s') . '.sql';
$cmd = 'mysqldump -h '.C('DB_HOST').' -u'.C('DB_USER').' -p'.C('DB_PWD').' '.C('DB_NAME').' > '.$path.$_POST['sqlname'];
exec($cmd,$arr,$flag);
if($flag == 0){
$Back -> create();
if( $Back->find( I('post.id') ) ){
$sqlname = $Back -> where('id = ' . I('post.id')) -> getfield('sqlname');
$back = $Back -> where('id = ' . I('post.id')) -> setfield('sqlname' , $_POST['sqlname']);
unlink($path.$sqlname);
}else{
$back = $Back -> add();
}
}
if( $back ){
$this -> redirect('Config/db_backup' , '' , 0.01 , '<script>alert("备份成功");</script>');
}else{
$this -> redirect('Config/db_backup' , '' , 0.01 , '<script>alert("备份失败");</script>');
}
}else{
$this -> getdb(1);
$this -> getdb(2);
$this -> getdb(3);
$this -> getdb(4);
$this -> getdb(5);
$this -> getdb(6);
$this -> getdb(7);
$this->display();
}
}
// 获取当前备份
private function getdb($id){
$Back = D('backup');
$assign = 'db'.$id;
$sqlname = $Back -> where('id = ' . $id) -> getfield('sqlname');
$this->assign($assign , $sqlname);
}