Files
D1041231009-WebGIS-PovertyMap/app/Http/Controllers/BackupController.php
T
2026-06-04 14:26:04 +07:00

42 lines
1.2 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\ActivityLog;
use Symfony\Component\Process\Process;
class BackupController extends Controller
{
public function download()
{
$db = config('database.connections.mysql');
$process = new Process([
'mysqldump',
'-h', $db['host'],
'-P', (string) $db['port'],
'-u', $db['username'],
'--single-transaction',
'--skip-lock-tables',
'--no-tablespaces',
$db['database'],
], null, ['MYSQL_PWD' => $db['password']]);
$process->setTimeout(120);
$process->run();
if (!$process->isSuccessful()) {
ActivityLog::record('backup', 'Gagal membuat backup database');
return response()->json(['message' => 'Backup gagal: ' . $process->getErrorOutput()], 500);
}
ActivityLog::record('backup', 'Mengunduh backup database');
$filename = 'backup-webgis-' . now()->format('Ymd-His') . '.sql';
return response($process->getOutput(), 200, [
'Content-Type' => 'application/sql',
'Content-Disposition' => "attachment; filename=\"{$filename}\"",
]);
}
}