PHP数据库备份文件分卷导入的实现思路

首先将分卷备份文件逐一上传至服务器,注意卷标的判断,然后执行导入操作

//如果要轉載本文請注明出處,免的出現版權紛爭,我不喜歡看到那種轉載了我的作品卻不注明出處的人 Seven{See7di#Gmail.com}

/*---------------------------------*/
Function _Doimport(){
$f1=_r($_GET["f1"]);

//如果是第一个回圈
IF($f1=="1"){
   //首先得到分卷个数
   For($i=1;$i<1000;$i++){
    IF(File_exists("./Cache/DB_".$i.".sql")){
     Continue;
    }Else{
     $_SESSION['_Num']=($i-1);
     Break;
    }
   }
   //初始化分卷编号
   $Fnum=1;
}Else{
   $Fnum=_r($_GET["fnum"]);
   Settype($Fnum, "integer");
}

//判断是否已经结束
IF($Fnum>$_SESSION['_Num']){
   //需要跳转到?work=backdb删除用户上传的备份文件
   Alert("恭喜,所有的备份文件已经全部写入数据库!\\n\\n建议您重新更新一下分类缓存和标签缓存以确保数据的正确性.","?work=backdb");
   Die();
}

$Fp = File_get_contents("./Cache/DB_".$Fnum.".sql");
$Fp = Explode(';'.Chr(10),$Fp);
$Fp = preg_replace("/^#(.*)\n/is","", $Fp);
//Echo "<textarea rows='23' style='width:100%;font-size:12px;'>";
Foreach($Fp as $key=>$val){
   //Echo $key.":".Trim($val).Chr(10)."==================================".Chr(10);
   Mysql_query(Trim($val).";");
}
//Echo "</textarea>";

Echo "<br>系统正在还原数据库备份文件DB_".$Fnum.".sql,请稍候...<br><br>";
Echo Loading($Fnum,$_SESSION['_Num']);
$Fnum++;
Alert("","?work=doimport&fnum=".$Fnum."");
}

需要导入的Sql文件格式与分卷导出的格式有关


你可能感兴趣的:(数据库备份)