function dump_database($next_ver) { global $db, $err, $prefix; include_once ROOT_PATH . 'admin/includes/cls_sql_dump.php'; require_once ROOT_PATH . 'upgrade/packages/' . $next_ver . '/dump_table.php'; /* 备份表为空时不作备份,返回真 */ if (empty($temp)) { return true; } @set_time_limit(300); $dump = new cls_sql_dump($db); $run_log = ROOT_PATH . 'data/sqldata/run.log'; $sql_file_name = $next_ver; $max_size = '2048'; $vol = 1; /* 变量验证 */ $allow_max_size = intval(@ini_get('upload_max_filesize')); //单位M if ($allow_max_size > 0 && $max_size > $allow_max_size * 1024) { $max_size = $allow_max_size * 1024; //单位K } if ($max_size > 0) { $dump->max_size = $max_size * 1024; } $tables = array(); foreach ($temp as $table) { $tables[$prefix . $table] = -1; } $dump->put_tables_list($run_log, $tables); /* 开始备份 */ $tables = $dump->dump_table($run_log, $vol); if ($tables === false) { $err->add($dump->errorMsg()); return false; } if (@file_put_contents(ROOT_PATH . 'data/sqldata/' . $sql_file_name . '.sql', $dump->dump_sql)) { return true; } else { return false; } }
foreach ($temp as $table) { $tables[$ecs->prefix . $table] = -1; } $dump->put_tables_list($run_log, $tables); break; case 'custom': foreach ($_POST['customtables'] as $table) { $tables[$table] = -1; } $dump->put_tables_list($run_log, $tables); break; } /* 开始备份 */ $tables = $dump->dump_table($run_log, $vol); if ($tables === false) { die($dump->errorMsg()); } if (empty($tables)) { /* 备份结束 */ if ($vol > 1) { /* 有多个文件 */ if (!@file_put_contents(ROOT_PATH . DATA_DIR . '/sqldata/' . $sql_file_name . '_' . $vol . '.sql', $dump->dump_sql)) { sys_msg(sprintf($_LANG['fail_write_file'], $sql_file_name . '_' . $vol . '.sql'), 1, array(array('text' => $_LANG['02_db_manage'], 'href' => 'database.php?act=backup')), false); } $list = array(); for ($i = 1; $i <= $vol; $i++) { $list[] = array('name' => $sql_file_name . '_' . $i . '.sql', 'href' => '../' . DATA_DIR . '/sqldata/' . $sql_file_name . '_' . $i . '.sql'); } $smarty->assign('list', $list); $smarty->assign('title', $_LANG['backup_success']); $smarty->display('sql_dump_msg.htm');