- define('MSB_VERSION','1.0.0');
-
- define('MSB_NL',"rn" ) ;
-
- define('MSB_STRING', 0);
- define('MSB_DOWNLOAD',1);
- define('MSB_SAVE',2);
- define('__SEP__', " /*sep*/" );
-
- set_time_limit( 600 );
-
- class MySQL_Backup {
- var $server = 'localhost';
- var $port = 3306; > var $username = 'root';
- var $password = '';
- var $database = '';
- var $link_id = -1;
- var $connected = false;
- var $tables = array();
- var $drop_tables = true;
- var $struct_only = false;
- var $comments = true;
- var $backup_dir = '';
- var $fname_format = 'd_m_y__H_i_s';
- var $error = '';
-
- var $complete_inserts = false;
- var $inserts_block = 200; MSB_STRING, $fname = '', $compress = false) {
- if ( !( $sql = $this->_Retrieve() ) ) {
- return false;
- }
- if ( $ $任務== MSB_SAVE ) {
- if (empty($fname)) {
- $fname = $this->backup_dir;
- $fname .= date($this->fname_format);
- $fname .= ($compress ? '.sql.gz' : '.sql');
- }
- return $this->_SaveToFile($fname, $sql, $compress);
- } elseif ($task == MSB_DOWNLOAD) {
- if (empty( $fname ) ) {
- $fname = date($this->fname_format);
- $fname .= ($compress ? ' .sql.gz' : '.sql ');
- }
- return $this->_DownloadFile($fname, $sql, $compress);
- } else {
- return $sql;
- }
- }
-
- function _Connect() {
- $value = false;
- if (!$this->connected) {
- $host = $this->server-server 。 -> ;link_id) {
- if (empty($this->database)) {
- $value = true;
- } elseif ($this->link_id !== -1) {
- $value = mysql_select_db($this->database, $this->link_id);
- } else {
- $value = mysql_select_db($this->database);
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- if (!$value) {
- $this->error = mysql_error();
- }
- return $value;
- }
-
- function _Query($ ) {
-
- function _Query($ ) {
- if ($this->link_id !== -1) {
- $result = mysql_query($sql, $this->link_id);
- } else {
- $result = mysql_query($sql) ;
- }
- if (!$result) {
- $this->error = mysql_error();
- }
- return $result;
- }
-
- 函數函數_GetTables() {
- $value = array();
- if ( !( $result = $this->_Query('SHOW TABLES') ) ) {
- return false;
- }
- while ( $row = mysql_fetch_row( $result ) ) {
- if (empty( $this->tables) || in_array( $row[0], $this->tables ) ) {
- $value[] = $row[0];
- }
- }
- if (!sizeof($value) ) {
- $this->error = '在資料庫中找不到表格。 ( $table ) {
- $value = '';
- $this->_Query( '鎖定表' . $table . ' WRITE' );
- if ( $this->comments ) {
- $value .= '#' 。 ;
- }
- if ( $this->drop_tables ) {
- $value .= '如果存在則刪除表格`' 。 __九月__ 。 }
- $row = mysql_fetch_assoc($result);
- $value .= str_replace("n", MSB_NL, $row['建立表']) 。 ';' __SEP__;
- $value .= MSB_NL 。 ;
- $value .= '# 轉儲表`' 的資料。 $value .= $this->_GetInserts($table);
- }
- $value .= MSB_NL 。 MSB_NL;
- $this->_Query('解鎖表');
- return $ value ;
- }
-
- function _GetInserts($table) {
- $value = '' ;
- if (!($result = $this->_Query('SELECT * FROM ' . $ table))) {
- return false;
- }
- if ( $this->; Complete_inserts ) {
- while ($row = mysql_fetch_row($result)) {
- $values = ' ';
- foreach ($row as $data) {
- $values .= ''' 。 加斜線($data) 。 $values, 0, -2);
- $value .= '插入' 。 MSB_NL;
- }
- } else {
- $blocks_counter = 0;
- $blocks = array();
- while ($row = mysql_fetch_row($result) )) {
- $ values = array();
- foreach ($row as $data) {
- $values[] = ''' .加上斜線($data) 。 ''';
- }
- $ $ $ blocks[] = '(' . implode( ',', $values ) . ')';
-
- if ( $blocks_counter ;inserts_block ) {
- $blocks_counter ;
- ;
- } else {
- $value .= '插入' . $表。 MSB_NL;
- $blocks = array();
- $blocks_counter = 0;
- }
- }
- if ( count( $blocks ) ) {
- $value .= '插入' 。 MSB_NL;
- }
- }
- return $value;
- }
-
- function _Retrieve() {
- $value = '';
- if (!$this- >_Connect()) {
- return false;
- }
- if ($this->comments) {
- $value .= '#' 。 MSB_NL;
- $value .= '# MySQL 資料庫轉儲' . MSB_NL;
- $value .= '# 由 MySQL_Backup 類別創建,版本。 '。 $this-> 伺服器。 value .= '# MySQL 版本: ' . mysql_get_server_info() 。 MSB_NL;
- if (!empty($this->database)) {
- $value .= '#' . phpversion() 。 MSB_NL;
- $value .= '# 資料庫: `' . $this->資料庫。 '``'。 ->_GetTables())) {
- return false;
- }
- foreach ($tables as $table) {
- if (!($table_dump = $this->_DumpTable($table)) ) {
- $this->error = mysql_error();
- return false;
- }
- $ value .= $table_dump;
- }
- return $value;
- }
- }
- return $value;
- }
- }
- return $value;
- }
-
- function _SaveToFile($fname, $sql, $compress) {
- if ($compress) {
- if (!($zf = gzopen($fname, 'w9'))) {
- $this->error = '無法輸出建立檔案。 ';
- return false;
- }
- gzwrite($zf, $sql);
- gzclose($zf);
- } else {
- if (!($f = fopen($fname, 'w'))) {
- $this->error = '無法建立輸出檔。 ';
- return false;
- }
- fwrite($f, $sql);
- fclose($ f);
- }
- 回傳true;
- }
-
- function _DownloadFile($fname, $sql, $compress) {
- header('Content-disposition: filename=' . $fname);
- header('Content-type: application/octetstream ');
- header('Pragma: no-cache');
- header('過渡時間: 0');
- echo ($compress ? gzencode($sql) : $sql);
- return true;
- }
- }
-
- ?>
複製程式碼
|