收藏 分销(赏)

PhpMysql数据库备份脚本.doc

上传人:二*** 文档编号:4711533 上传时间:2024-10-10 格式:DOC 页数:10 大小:61KB 下载积分:5 金币
下载 相关 举报
PhpMysql数据库备份脚本.doc_第1页
第1页 / 共10页
本文档共10页,全文阅读请下载到手机保存,查看更方便
资源描述
Php:Mysql数据库备份脚本 配置文件 <?php /******* [Database Bakup v1.0] (C)2011 - 2012 The MySQL database backup and PHP program design @Filename config.php $ @Author Gavin zhu(朱朱) $ @Date 2012-07-20 22:22:225 源码:QQ:1011885807,TELL:15186481797 **************/ $$dbhostname = "localhost"; //数据库主机 $dbusername = "root"; //数据库用户 $dbpassword = "root"; //数据库密码 $dbdataname = "love_zmh"; //数据库名称 $dbconntype = 0; //连接方式,1为持续连接,0为一般链接(虚拟主机用户推荐) $app_name="zmh_"; $dbtablepre = "zgh_"; date_default_timezone_set("PRC"); $charset='utf8'; ?> <?php <?php /******* [Database Bakup v1.0] (C)2011 - 2012 The MySQL database backup and PHP program design @Filename db_mysql.php $ @Author Gavin zhu(朱朱) $ @Date 2012-07-20 22:22:225 **************/ !function_exists('readover') && exit('Forbidden'); Class DB { var $query_num = 0; function DB($dbhostname, $dbusername, $dbpassword, $dbdataname, $dbconntype = 0) { $this->connect($dbhostname, $dbusername, $dbpassword, $dbdataname, $dbconntype); } function connect($dbhostname, $dbusername, $dbpassword, $dbdataname, $dbconntype = 0) { $dbconntype==0 ? @mysql_pconnect($dbhostname, $dbusername, $dbpassword) : @mysql_pconnect($dbhostname, $dbusername, $dbpassword); mysql_errno()!=0 && $this->halt("Connect($dbconntype) to MySQL ($dbhostname,$dbusername) failed"); if($this->server_info() > '4.1' && $GLOBALS['charset']){ mysql_query("SET NAMES '".$GLOBALS['charset']."'"); } if($this->server_info() > '5.0'){ mysql_query("SET sql_mode=''"); } if($dbdataname) { if (!@mysql_select_db($dbdataname)){ $this->halt('Cannot use database '.$dbdataname); } } } function close() { return mysql_close(); } function select_db($dbdataname){ if (!@mysql_select_db($dbdataname)){ $this->halt('Cannot use database '.$dbdataname); } } function server_info(){ return mysql_get_server_info(); } function query($SQL,$method='') { $GLOBALS['ZGH']=='zgh_' or $SQL=str_replace('zgh_',$GLOBALS['ZGH'],$SQL); if($method=='U_B' && function_exists('mysql_unbuffered_query')){ $query = mysql_unbuffered_query($SQL); }else{ $query = @mysql_query($SQL); } $this->query_num++; //echo $SQL.'<br>'.$this->query_num.'<br>'; //if (!$query) $this->halt('Query Error: ' . $SQL); return $query; } function get_one($SQL){ $query=$this->query($SQL,'U_B'); $rs =& mysql_fetch_array($query, MYSQL_ASSOC); return $rs; } function zgh_update($SQL_1,$SQL_2,$SQL_3){ $rt=$this->get_one($SQL_1); if($rt){ $this->update($SQL_2); } else{ $this->update($SQL_3); } } function update($SQL) { $GLOBALS['ZGH']=='zgh_' or $SQL=str_replace('zgh_',$GLOBALS['ZGH'],$SQL); if($GLOBALS['db_lp']==1){ if(substr($SQL,0,7)=='REPLACE'){ $SQL=substr($SQL,0,7).' LOW_PRIORITY'.substr($SQL,7); } else{ $SQL=substr($SQL,0,6).' LOW_PRIORITY'.substr($SQL,6); } } if(function_exists('mysql_unbuffered_query')){ $query = mysql_unbuffered_query($SQL); }else{ $query = @mysql_query($SQL); } $this->query_num++; //echo $SQL.'<br>'.$this->query_num.'<br>'; //if (!$query) $this->halt('Update Error: ' . $SQL); return $query; } function fetch_array($query, $result_type = MYSQL_ASSOC) { return mysql_fetch_array($query, $result_type); } function affected_rows() { return mysql_affected_rows(); } function num_rows($query) { $rows = mysql_num_rows($query); return $rows; } function free_result($query) { return mysql_free_result($query); } function insert_id() { $id = mysql_insert_id(); return $id; } function halt($msg='') { new DB_ERROR($msg); } } Class DB_ERROR { function DB_ERROR($msg) { global $db_bbsname,$db_obstart,$REQUEST_URI; $sqlerror = mysql_error(); $sqlerrno = mysql_errno(); ob_end_clean(); $db_obstart==1 ? ob_start('ob_gzhandler') : ob_start(); echo"<html><head><title>$db_bbsname</title><style type='text/css'>P,BODY{FONT-FAMILY:tahoma,arial,sans-serif;FONT-SIZE:11px;}A { TEXT-DECORATION: none;}a:hover{ text-decoration: underline;}TD { BORDER-RIGHT: 1px; BORDER-TOP: 0px; FONT-SIZE: 16pt; COLOR: #000000;}</style><body>\n\n"; echo"<table style='TABLE-LAYOUT:fixed;WORD-WRAP: break-word'><tr><td>$msg"; echo"<br><br><b>The URL Is</b>:<br>http://$_SERVER[HTTP_HOST]$REQUEST_URI"; echo"<br><br><b>MySQL Server Error</b>:<br>$sqlerror ( $sqlerrno )"; echo"<br><br><b>You Can Get Help In</b>:<br><a target=_blank href=><b></b></a>"; echo"</td></tr></table>"; exit; } } ?> <?php <?php /******* [Database Bakup v1.0] (C)2011 - 2012 The MySQL database backup and PHP program design @Filename bakup.php $ @Author Gavin zhu(朱朱) $ @Date 2012-07-20 22:22:225 **************/ !function_exists('adminmsg') && exit('Forbidden'); $timestamp=time(); if(!$a_type)$a_type='bakout'; $basename="$admin_file?adminjob=bakup&a_type=$a_type"; if($a_type=='bakout'){ if(empty($action)){ $tabledb=array(); $othortable=array(); $query = $db->query("SHOW TABLES"); while ($rt = $db->fetch_array($query)){ $value = trim(current($rt)); $othortable[]=$value; } include PrintEot('bakup');exit; } else{ $bak="\nFilename:Gavin Zhu Database bakup file\n##########Gavin Zhu Database bakup version:v1.0\n#Time: ".date('Y-m-d H:i:s')."\nAuthor:Gavin zhu(朱朱) ---------\n\n\n"; $db->query("SET SQL_QUOTE_SHOW_CREATE = 0"); $start = intval($start); !$tabledb && !$tablesel && adminmsg('operate_error'); !$tabledb && $tabledb=explode("|",$tablesel); !$step && $sizelimit/=2; $bakupdata=bakupdata($tabledb,$start); if(!$step){ !$tabledb && adminmsg('operate_error'); $tablesel=implode("|",$tabledb); $step=1; $start=0; $pre='zgh_'.get_date($timestamp,'md').'_'.num_rand(10).'_'; $bakuptable=bakuptable($tabledb); } $f_num=ceil($step/2); $filename=$pre.$f_num.'.sql'; $step++; $writedata=$bakuptable ? $bakuptable.$bakupdata : $bakupdata; $t_name=$tabledb[$tableid-1]; $c_n=$startfrom; if($stop==1){ $files=$step-1; trim($writedata) && writeover(D_P.'data/'.$filename,$bak.$writedata,'ab'); adminmsg('bakup_step',"$basename&action=$action&start=$startfrom&tableid=$tableid&sizelimit=$sizelimit&step=$step&pre=$pre&tablesel=$tablesel&rows=$rows",1); } else{ trim($writedata) && writeover(D_P.'data/'.$filename,$bak.$writedata,'ab'); if($step>1){ for($i=1;$i<=$f_num;$i++){ $bakfile.='<a href="data/'.$pre.$i.'.sql">'.$pre.$i.'.sql</a><br>'; } } adminmsg('bakup_out'); } } } elseif($a_type=='bakin'){ if(empty($action)){ $filedb=array(); $handle=opendir(D_P.'data'); while($file = readdir($handle)){ if((!$dbtablepre || eregi("^zgh_",$file) || eregi("^$dbtablepre",$file)) && eregi("\.sql$",$file)){ $strlen=eregi("^$dbtablepre",$file) ? 16 + strlen($dbtablepre) : 19; $fp=fopen(D_P."data/$file",'rb'); $bakinfo=fread($fp,200); fclose($fp); $detail=explode("\n",$bakinfo); $bk['name']=$file; $bk['version']=substr($detail[2],10); $bk['time']=substr($detail[3],7); $bk['pre']=substr($file,0,$strlen); $bk['num']=substr($file,$strlen,strrpos($file,'.')-$strlen); $filedb[]=$bk; } } include PrintEot('bakup');exit; } elseif($action=='bakincheck'){ include PrintEot('bakup');exit; } elseif($action=='bakin'){ if(!$count){ $count=0; $handle=opendir(D_P.'data'); while($file = readdir($handle)){ if(eregi("^$pre",$file) && eregi("\.sql$",$file)){ $count++; } } } !$step && $step=1; /* $sql=readover(D_P.'data/'.$pre.$step.'.sql'); bakindata($sql); */ bakindata(D_P.'data/'.$pre.$step.'.sql'); $i=$step; $step++; if($count > 1 && $step <= $count){ adminmsg('bakup_in',"$basename&action=bakin&step=$step&count=$count&pre=$pre",1); } adminmsg('operate_success'); } elseif($action=='del'){ if(!$delfile)adminmsg('operate_error'); foreach($delfile as $key => $value){ if(eregi("\.sql$",$value)){ P_unlink(D_P."data/$value"); } } adminmsg('operate_success'); } } function num_rand($lenth){ mt_srand((double)microtime() * 1000000); for($i=0;$i<$lenth;$i++){ $randval.= mt_rand(0,9); } $randval=substr(md5($randval),mt_rand(0,32-$lenth),$lenth); return $randval; } function bakupdata($tabledb,$start=0){ global $db,$sizelimit,$tableid,$startfrom,$stop,$rows; $tableid=$tableid?$tableid-1:0; $stop=0; $t_count=count($tabledb); for($i=$tableid;$i<$t_count;$i++){ if(!$rows){ $ts=$db->get_one("SHOW TABLE STATUS LIKE '$tabledb[$i]'"); $rows=$ts['Rows']; } $limitadd="LIMIT $start,100000"; $query = $db->query("SELECT * FROM $tabledb[$i] $limitadd"); $num_F = mysql_num_fields($query); while ($datadb = mysql_fetch_row($query)){ $start++; $bakupdata .= "INSERT INTO $tabledb[$i] VALUES("."'".mysql_escape_string($datadb[0])."'"; $tempdb=''; for($j=1;$j<$num_F;$j++){ $tempdb.=",'".mysql_escape_string($datadb[$j])."'"; } $bakupdata .=$tempdb. ");\n"; if($sizelimit && strlen($bakupdata)>$sizelimit*1000){ break; } } $db->free_result($query); if($start>=$rows){ $start=0; $rows=0; } $bakupdata .="\n"; if($sizelimit && strlen($bakupdata)>$sizelimit*1000){ $start==0 && $i++; $stop=1; break; } $start=0; } if($stop==1){ $i++; $tableid=$i; $startfrom=$start; $start=0; } return $bakupdata; } function bakuptable($tabledb){ global $db; foreach($tabledb as $key=>$table){ $creattable.= "DROP TABLE IF EXISTS $table;\n"; $CreatTable = $db->get_one("SHOW CREATE TABLE $table"); $CreatTable['Create Table']=str_replace($CreatTable['Table'],$table,$CreatTable['Create Table']); $creattable.=$CreatTable['Create Table'].";\n\n"; } return $creattable; } function bakindata($filename) { global $db,$charset; $sql=file($filename); $query=''; $num=0; foreach($sql as $key => $value){ $value=trim($value); if(!$value || $value[0]=='#') continue; if(eregi("\;$",$value)){ $query.=$value; if(eregi("^CREATE",$query)){ $extra = substr(strrchr($query,')'),1); $query = str_replace($extra,'',$query); if($db->server_info() > '4.1'){ $extra = $charset ? "ENGINE=MyISAM DEFAULT CHARSET=$charset;" : "ENGINE=MyISAM;"; }else{ $extra = "TYPE=MyISAM;"; } $query .= $extra; }elseif(eregi("^INSERT",$query)){ $query='REPLACE '.substr($query,6); } $db->query($query); $query=''; } else{ $query.=$value; } } } ?>
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 数据库/数据算法

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服