我正在尝试将数据库恢复功能添加到基于Laravel
的应用程序中,但不知道从哪里开始?
我一直在努力
//restore database from backup
public function restore($file_name)
{
try {
$DB_HOST = env("DB_HOST", "");
$DB_DATABASE = env("DB_DATABASE", "");
$DB_USERNAME = env("DB_USERNAME", "");
$DB_PASSWORD = env("DB_PASSWORD", "");
$connection = mysqli_connect($DB_HOST, $DB_USERNAME, $DB_PASSWORD, $DB_DATABASE);
$file = config('backup.backup.name') . '/' . $file_name;
$disk = Storage::disk(config('backup.backup.destination.disks')[0]);
if ($disk->exists($file)) {
$fs = Storage::disk(config('backup.backup.destination.disks')[0])->getDriver();
$handle = fopen($file, "r+");
$contents = fread($handle, filesize($file));
$sql = explode(';', $contents);
$flag = 0;
foreach ($sql as $query) {
$result = mysqli_query($connection, $query);
if ($result) {
$flag = 1;
}
}
fclose($handle);
} else {
abort(404, "The backup file doesn't exist.");
}
if ($flag) {
Toastr::success('Operation successful', 'Success');
return redirect()->back();
} else {
Toastr::error('Operation Failed', 'Failed');
return redirect()->back();
}
} catch (\Exception $e) {
Toastr::error('Operation Failed', 'Failed');
return redirect()->back();
}
}
我正在使用Dropbox的A flysystem driver,它使用v2 API将我的数据库备份到Dropbox。
1条答案
按热度按时间szqfcxe21#
我使用了https://github.com/ifsnop/mysqldump-php
Mysqldump
类,它有一个恢复方法,不尝试和执行命令行mysql,这是许多其他解决方案所做的。$file
是DB的完全转储: