M.A.I.T小麦
(M.A.I.T小麦)
中级会员
 
中级会员
UID 31524
精华
0
积分 203
帖子 219
金钱 203 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2004-9-28
状态 离线
|
[推荐阅读] 猫和网速的一些问题
<?php ## # 备份数据库 # function backup($dir='') { if (empty($dir)) $dir = DIR_FS_BACKUP;
set_time_limit( 0 );
$backup_file = $this->database.'__'.date( 'YmdHi' ).'.sql';
$fp = @fopen($dir . $backup_file, 'w'); $schema = "nn# ===============================================================n"; $schema .= "n# 数据库名: ".$this->database." n"; $schema .= "n# 备份保存文件名:".$backup_file." n" ; $schema .= "n# 文件 ===============================================================nnn"; fputs( $fp, $schema );
$tables_query = $this->query( "show tables from `" . $this->database . "`" ); while ( $tables = $this->fetch_array( $tables_query ) ) { list( , $table ) = each( $tables );
$schema = 'drop table if exists `' . $table . '`;' . "n" . 'create table `' . $table . '` (' . "n";
$table_list = array(); $fields_query = $this->query( "show fields from `" . $table ."`"); while ( $fields = $this->fetch_array( $fields_query ) ) { $table_list[] = $fields['Field'];
$schema .= ' ' . $fields['Field'] . ' ' . $fields['Type'];
if ( strlen( $fields['Default'] ) > 0 ) $schema .= ' default '' . $fields['Default'] . ''';
if ( $fields['Null'] != 'YES' ) $schema .= ' not null';
if ( isset( $fields['Extra'] ) ) $schema .= ' ' . $fields['Extra'];
$schema .= ',' . "n"; }
$schema = ereg_replace( ",n$", '', $schema ); // add the keys $index = array(); $keys_query = $this->query( "show keys from `" . $table ."`"); while ( $keys = $this->fetch_array( $keys_query ) ) { $kname = $keys['Key_name'];
if ( !isset( $index[$kname] ) ) { $index[$kname] = array( 'unique' => !$keys['Non_unique'], 'columns' => array() ); }
$index[$kname]['columns'][] = $keys['Column_name']; }
while ( list( $kname, $info ) = each( $index ) ) { $schema .= ',' . "n";
$columns = implode( '`,`', $info['columns']);
if ( $kname == 'PRIMARY' ) { $schema .= ' PRIMARY KEY (`' . $columns . '`)'; } elseif ( $info['unique'] ) { $schema .= ' UNIQUE ' . $kname . ' (`' . $columns . '`)'; } else { $schema .= ' KEY ' . $kname . ' (`' . $columns . '`)'; } }
$schema .= "n" . ');' . "nn"; fputs( $fp, $schema ); // dump the data $rows_query = $this->query( "select `" . implode( '`,`', $table_list ) . "` from " . $table ); while ( $rows = $this->fetch_array( $rows_query ) ) { $schema = 'insert into `' . $table . '` (`' . implode( '`, `', $table_list ) . '`) values (';
reset( $table_list ); while ( list( , $i ) = each( $table_list ) ) { if ( !isset( $rows[$i] ) ) { $schema .= 'NULL, '; } elseif ( !empty( $rows[$i] ) ) { $row = addslashes( $rows[$i] ); $row = ereg_replace( "n#", "n" . '#', $row );
$schema .= ''' . $row . '', '; } else { $schema .= ''', '; } }
$schema = ereg_replace( ', $', '', $schema ) . ');' . "n"; fputs( $fp, $schema ); } }
fclose( $fp );
include_once(dirname(__FILE__)."/Files.inc.php"); # 加密类 $objFiles = new Files(); $file_str = $objFiles->read($dir.$backup_file);
include_once(dirname(__FILE__)."/EnDcCrypt.inc.php"); # 加密类 $objEnDcCrypt = new EnDcCrypt(); $file_str = $objEnDcCrypt->EnCrypt($file_str);
$fp = @fopen($dir.$backup_file, 'w'); fputs( $fp, $file_str ); fclose( $fp );
return $backup_file; }
## # 恢复备份的数据库 # function revert($backup_file='') { if (!file_exists($backup_file)) { return $this->err->catchErr( $this->getSysMsg('数据文件不存在',$backup_file)); }
set_time_limit( 0 );
include_once(dirname(__FILE__)."/Files.inc.php"); $objFiles = new Files(); $file_str = $objFiles->read($backup_file);
include_once(dirname(__FILE__)."/EnDcCrypt.inc.php"); # 加密类 $objEnDcCrypt = new EnDcCrypt(); $file_str = $objEnDcCrypt->DcCrypt($file_str);
$array = array(); $array = explode(";", $file_str);
foreach($array as $k=>$v) { if (strlen($v)>6) { if(!mysql_query($v)) { return $this->err->catchErr( $this->getSysMsg('第'.$k.'条恢复有错误,请手工恢复',$v)); } } } return true; } ?>
|
|