php mysql 数据库备份程序
/*
提供一款实例的php mysql 数据库备份程序,很好方法的可以对你的数据库进行在线实时备份,这样可以保存数据库的安全,并且他是以.sql文件保存在bakdata目录还日期生成的数据库备份文件的。
php教程 mysql教程 数据库教程备份程序
/*
提供一款实例的php mysql 数据库备份程序,很好方法的可以对你的数据库进行在线实时备份,这样可以保存数据库的安全,并且他是以.sql文件保存在bakdata目录还日期生成的数据库备份文件的。
*/
?>
数据管理
esweb系统数据管理
/*--------------界面--------------*/if(!$_post['act']){/*----------------------*/
$msgs[]="服务器备份目录为$backup";
$msgs[]="对于较大的数据表,强烈建议使用分卷备份";
$msgs[]="只有选择备份到服务器,才能使用分卷备份功能";
//show_msg($msgs);
?>
<フォーム名="myform" メソッド="post" action="sql_backup.php">
esWeb システム データのバックアップ
バックアップ方法を選択
すべてのデータをバックアップします
単一のテーブル データをバックアップします
選択してください
$d->query("$mysqldb からテーブルのステータスを表示");
While($d->nextrecord()){
echo "".$d->f('name')." ";}
?>
ターゲットの場所を選択
サーバーにバックアップします
ローカルにバックアップ
ボリューム バックアップを使用
分割ボリューム バックアップ k (バックアップを選択した場合のみ分割ボリュームを使用できます)サーバーへのバックアップ機能)
プログラムの説明
1. より大きなデータ テーブルの場合は、ボリューム バックアップを使用することを強くお勧めします。
2. ボリューム バックアップ機能は、サーバーへのバックアップを選択した場合にのみ使用できます。
="リセット" 値="リセット" クラス="ボタン" />
表>
フォーム>
/*----*/else{/*--------------メインプログラム---------------------- ------------------*/
if($_post['weizhi']=="localpc"&&$_post['fenjuan']=='yes')
{$msgs[]="サーバーへのバックアップを選択した場合のみ、ボリューム バックアップ機能を使用できます";
show_msg($msgs); ページエンド();}
if($_post['fenjuan']=="はい"&&!$_post['filesize'])
{$msgs[]="ボリューム バックアップ機能が選択されましたが、ボリューム ファイル サイズが入力されていませんでした";
show_msg($msgs); ページエンド();}
if($_post['weizhi']=="サーバー"&&!writeable($backup))
{$msgs[]="バックアップ ファイル ストレージ ディレクトリ '$backup' は書き込み可能ではありません。ディレクトリ属性を変更してください。";
show_msg($msgs); ページエンド();}/*----------すべてのテーブルをバックアップします---------------*/if($_post['bfzl']=="quanbubiao"){/* - ---*/
/*----ボリュームに分割されていません*/if(!$_post['fenjuan']){/*---------------------- - -------*/
if(!$tables=$d->query("$mysqldb からテーブルのステータスを表示"))
{$msgs[]="データベース構造の読み取り中にエラーが発生しました";
$sql="";
while($d->nextrecord($tables))
{
$table=$d->f("名前");
$sql.=make_header($table);
$d->query("select * from $table");
$num_fields=$d->nf();
while($d->nextrecord())
{$sql.=make_record($table,$num_fields);}
}
$filename=date("ymd",time())."_all.sql";
if($_post['weizhi']=="localpc") down_file($sql,$filename);
elseif($_post['weizhi']=="サーバー")
{if(write_file($sql,$filename))
$msgs[]="すべてのデータ テーブル データのバックアップが完了し、バックアップ ファイル '$backup/$filename' が生成されました";
else $msgs[]="すべてのデータテーブルのバックアップに失敗しました";
show_msg($msgs);
ページエンド();
}
/*-----------------ロールを終了しないでください*/}/*---------------------- --- */
/*---------------ボリューム*/else{/*---------------------- - -*/
if(!$_post['filesize'])
{$msgs[]="バックアップ ファイルのボリューム サイズを入力してください";
if(!$tables=$d->query("$mysqldb からテーブルのステータスを表示"))
{$msgs[]="データベース構造の読み取り中にエラーが発生しました";
$sql=""; $p=1;
$filename=date("ymd",time())."_all";
while($d->nextrecord($tables))
{
$table=$d->f("名前");
$sql.=make_header($table);
$d->query("select * from $table");
$num_fields=$d->nf();
while($d->nextrecord())
{$sql.=make_record($table,$num_fields);
if(strlen($sql)>=$_post['ファイルサイズ']*1000){
$filename.=("_v".$p.".sql");
If(write_file($sql,$filename))
$msgs[]="すべてのデータ テーブル-ボリューム-".$p."-データのバックアップが完了しました。バックアップ ファイル '$backup/$filename'" が生成されました;
else $msgs[]="バックアップテーブル-".$_post['テーブル名']."-失敗";
$p++;
$filename=date("ymd",time())."_all";
$sql="";}
}
}
if($sql!=""){$ファイル名.=("_v".$p.".sql");
if(write_file($sql,$filename))
$msgs[]="すべてのデータ テーブル-ボリューム-".$p."-データのバックアップが完了しました。バックアップ ファイル '$backup/$filename'" が生成されました;}
show_msg($msgs);
/*----------巻終わり*/}/*--------------------- - -----------------*/
/*----------すべてのテーブルのバックアップの終了*/}/*---------------------------- ----- ---------------*/
/*----------単一テーブルをバックアップ-----*/elseif($_post['bfzl']=="danbiao"){/*---------- --*/
if(!$_post['テーブル名'])
{$msgs[]="バックアップするデータテーブルを選択してください";}
/*----------各巻に分割されていません*/if(!$_post['fenjuan']){/*-------- - ----------*/
$sql=make_header($_post['テーブル名']);
$d->query("select * from ".$_post['tablename']);
$num_fields=$d->nf();
while($d->nextrecord())
{$sql.=make_record($_post['テーブル名'],$num_fields);}
$filename=date("ymd",time())."_".$_post['tablename'].".sql";
if($_post['weizhi']=="localpc") down_file($sql,$filename);
elseif($_post['weizhi']=="サーバー")
{if(write_file($sql,$filename))
$msgs[]="Table-".$_post['tablename']."-データのバックアップが完了し、バックアップ ファイル '$backup/$filename'" が生成されます;
else $msgs[]="バックアップテーブル-".$_post['テーブル名']."-失敗";
show_msg($msgs);
ページエンド();
}
/*----------------ロールを終了しないでください*/}/*--------------------- --- ----------*/
/*----------------ボリューム*/else{/*---------------------- - ---------------*/
if(!$_post['filesize'])
{$msgs[]="バックアップ ファイルのボリューム サイズを入力してください";
$sql=make_header($_post['テーブル名']);
$filename=date("ymd",time())."_".$_post['テーブル名'];
$d->query("select * from ".$_post['tablename']);
$num_fields=$d->nf();
while ($d->nextrecord())
{
$sql.=make_record($_post['テーブル名'],$num_fields);
If(strlen($sql)>=$_post['ファイルサイズ']*1000){
$filename.=("_v".$p.".sql");
If(write_file($sql,$filename))
$msgs[]="Table-".$_post['tablename']."- Volume-".$p."-データのバックアップが完了し、バックアップ ファイル '$backup/$filename'" が生成されます;
else $msgs[]="バックアップテーブル-".$_post['テーブル名']."-失敗";
$p++;
$filename=date("ymd",time())."_".$_post['テーブル名'];
$sql="";}
}
if($sql!=""){$ファイル名.=("_v".$p.".sql");
if(write_file($sql,$filename))
$msgs[]="Table-".$_post['tablename']."- Volume-".$p."-データのバックアップが完了し、バックアップ ファイル '$backup/$filename'" が生成されます。}
show_msg($msgs);
/*----------巻末*/}/*---------------------------- -- ------------------*/
/*----------バックアップ単一テーブルの終了*/}/*---------------------------- ---- ------------------*/
/*---*/}/*---------------メインプログラム終了---------------------- - ------------------*/
関数 write_file($sql,$filename)
{
$re=true;
グローバル $バックアップ;
if(!@$fp=fopen($backup."/".$filename,"w+")) {$re=false; echo "ターゲット ファイルを開けませんでした";}
if(!@fwrite($fp,$sql)) {$re=false; echo "ファイルの書き込みに失敗しました";}
if(!@fclose($fp)) {$re=false; echo "ターゲット ファイルを閉じることができませんでした";}
$re を返します;
}
関数 down_file($sql,$filename)
{
ob_end_clean();
header("コンテンツエンコーディング: なし");
header("content-type: ".(strpos($_server['http_user_agent'], 'msie') ? 'application/octetstream' : 'application/octet-stream'));
header("content-disposition: ".(strpos($_server['http_user_agent'], 'msie') ? 'inline; ' : 'attachment; ')."filename=".$filename);
header("content-length: ".strlen($sql));
header("プラグマ: キャッシュなし");
header("有効期限: 0");
エコー $sql;
$e=ob_get_contents();
ob_end_clean();
}
書き込み可能な関数($dir)
{
if(!is_dir($dir)) {
@mkdir($dir, 0777);
}
if(is_dir($dir))
{
if($fp = @fopen("$dir/test.test", 'w'))
{
@fclose($fp);
@unlink("$dir/test.test");
$書き込み可能 = 1;
}
他に{
$書き込み可能 = 0;
}
}
$writeable を返す;
}
関数 make_header($table)
{グローバル $d;
$sql="存在する場合はテーブルを削除 ".$table."n";
$d->query("show create table ".$table);
$d->nextrecord();
$tmp=preg_replace("/n/","",$d->f("テーブルの作成"));
$sql.=$tmp."n";
$sql を返します;
}
関数 make_record($table,$num_fields)
{グローバル $d;
$comma="";
$sql .= "「.$table.」に挿入します。values(";
for($i = 0; $i
{$sql .= ($comma."'".mysql_escape_string($d->record[$i])."'"); $comma = ",";}
$sql .= ")n";
$sql を返します;
}
関数 show_msg($msgs)
{
$title="ヒント:";
echo "
echo "
".$title." ";
echo "
";
while (list($k,$v)=each($msgs))
{
echo "".$v." ";
}
echo "
";
}
関数 pageend()
{
exit();
}
?>
クラスデータベース{
var $linkid;
var $sqlid;
var $record;
関数 db($host="",$username="",$password="",$database="")
{
if(!$this->linkid) @$this->linkid = mysql_connect($host, $username, $password) または die("连接服务器失败.");
@mysql_select_db($database,$this->linkid) または die("無法打开データベース库");
$this->リンクIDを返す;}
関数クエリ($sql)
{if($this->sqlid=mysql_query($sql,$this->linkid)) return $this->sqlid;
他に{
$this->err_report($sql,mysql_error);
false を返します;}
}
関数nr($sql_id="")
{if(!$sql_id) $sql_id=$this->sqlid;
return mysql_num_rows($sql_id);}
関数 nf($sql_id="")
{if(!$sql_id) $sql_id=$this->sqlid;
return mysql_num_fields($sql_id);}
関数 nextrecord($sql_id="")
{if(!$sql_id) $sql_id=$this->sqlid;
if($this->record=mysql_fetch_array($sql_id)) return $this->record;
それ以外の場合は false を返します;
}
関数 f($name)
{
if($this->record[$name]) return $this->record[$name];
それ以外の場合は false を返します;
}
関数 close() {mysql_close($this->linkid);}
関数ロック($tblname,$op="write")
{if(mysql_query("ロック テーブル ".$tblname." ".$op)) true を返します。それ以外の場合は false を返します;}
機能ロック解除()
{if(mysql_query("テーブルのロック解除")) true を返します。それ以外の場合は false を返します;}
関数 ar() {
return @mysql_affected_rows($this->linkid);
}
関数 i_id() {
mysql_insert_id() を返す;
}
関数 err_report($sql,$err)
{
echo "mysql查询错误 ";
echo "查询语句:".$sql." ";
echo "错误情報:".$err;
}
/**************************************授業終了********** * *****************/
グローバル $mysqlhost、$mysqluser、$mysqlpwd、$mysqldb、$backup;
$mysqlhost = $mydbhost; //ホスト名
$mysqluser = $mydbuser; //ログイン名
$mysqlpwd = $mydbpw; //パスワード
$mysqldb = $mydbname; //データベースの名前
$d=新しいデータベース($mysqlhost,$mysqluser,$mysqlpwd,$mysqldb);
$d->query("名前を設定 'utf8'");
http://www.bkjia.com/PHPjc/630798.html www.bkjia.com true http://www.bkjia.com/PHPjc/630798.html 技術記事 php mysql データ库备份程序/*一款例を提供する php mysql データ库备份程序、優れた方法でオンラインで実行できるデータベース库を保存できる...