public function actionStart($part = null, $start = null) { \Yii::$app->response->format = Response::FORMAT_JSON; $list = \Yii::$app->session->get('backup_list'); $db = new Database($list[$part], array('path' => realpath(\Yii::$app->controller->module->params['DATA_BACKUP_PATH']) . DIRECTORY_SEPARATOR, 'compress' => $list[$part][2])); $start = $db->import($start); if (false === $start) { return ['status' => 0, 'info' => '还原数据出错']; } elseif (0 === $start) { //下一卷 if (isset($list[++$part])) { return ['status' => 1, 'info' => "正在还原...#{$part}", 'part' => $part, 'start' => 0]; } else { \Yii::$app->session->set('backup_list', null); return ['status' => 1, 'info' => '还原完成!']; } } else { if ($start[1]) { $rate = floor(100 * ($start[0] / $start[1])); return ['status' => 1, 'info' => "正在还原...#{$part} ({$rate}%)", 'part' => $part, 'start' => $start[0]]; } else { return ['status' => 1, 'info' => "正在还原...#{$part}", 'part' => $part, 'start' => $start[0], 'gz' => 1]; } } }
public function actionStart($id = null, $start = null) { \Yii::$app->response->format = Response::FORMAT_JSON; $tables = \Yii::$app->session->get('backup_tables'); $id = \Yii::$app->request->post('id'); $start = \Yii::$app->request->post('start'); //备份指定表 $Database = new Database(\Yii::$app->session->get('backup_file'), \Yii::$app->session->get('backup_config')); $start = $Database->backup($tables[$id], $start); if (false === $start) { //出错 return ['status' => 0, 'info' => '备份出错!']; } elseif (0 === $start) { //下一表 if (isset($tables[++$id])) { $tab = array('id' => $id, 'start' => 0); return ['status' => 1, 'tab' => $tab]; } else { //备份完成,清空缓存 unlink(\Yii::$app->session->get('backup_config')['path'] . 'backup.lock'); \Yii::$app->session->set('backup_tables', null); \Yii::$app->session->set('backup_file', null); \Yii::$app->session->set('backup_config', null); return ['status' => 1, 'info' => '备份完成!']; } } else { $tab = array('id' => $id, 'start' => $start[0]); $rate = floor(100 * ($start[0] / $start[1])); return ['status' => 1, 'info' => "正在备份...({$rate}%)", 'tab' => $tab]; } }