Upload via GUI (338 Dateien)

This commit is contained in:
2026-10-25 17:47:16 +00:00
parent cf93c5fbae
commit f43859ba5f
2 changed files with 35 additions and 0 deletions
+20
View File
@@ -59,8 +59,25 @@ function run_process_backups(PDO $pdo, bool $verbose = false, bool $force = fals
return ['ran' => false, 'ok' => true, 'log' => $log];
}
// Nur ein Backup gleichzeitig: Der echte Cronjob, der eingebaute Hintergrunddienst und der Knopf auf der Seite „Backup“ dürfen sich nicht
// überlappen. „Letztes Backup“ wird erst NACH dem Erstellen eingetragen; ein zweiter Lauf würde das Backup sonst weiterhin als fällig sehen.
if (!backup_lock_acquire($pdo)) {
$log[] = date('Y-m-d H:i:s') . ' – Es läuft bereits ein Backup, dieser Lauf wird übersprungen.';
return ['ran' => false, 'ok' => true, 'log' => $log];
}
if (!$force) { // Ein anderer Lauf kann gerade erst fertig geworden sein: nach dem Erhalt der Sperre noch einmal prüfen
$lastNow = bset($pdo, 'last_auto_backup') ?: '1970-01-01';
$days = ['daily' => 1, 'weekly' => 7, 'monthly' => 30][$schedule] ?? null;
if ($days === null || strtotime($lastNow) >= strtotime("-{$days} days", time())) {
backup_lock_release($pdo);
$log[] = date('Y-m-d H:i:s') . ' – Kein Backup nötig (ein anderer Lauf war gerade schneller).';
return ['ran' => false, 'ok' => true, 'log' => $log];
}
}
$log[] = date('Y-m-d H:i:s') . ' – Starte Backup...';
try {
$result = create_backup();
if (!$result['ok']) {
@@ -83,6 +100,9 @@ function run_process_backups(PDO $pdo, bool $verbose = false, bool $force = fals
: "INSERT INTO backup_settings (key_name, value, updated_at) VALUES ('last_auto_backup', ?, ?)
ON DUPLICATE KEY UPDATE value=VALUES(value), updated_at=VALUES(updated_at)";
$pdo->prepare($backupSettingSql)->execute([$backupTime, $backupTime]);
} finally {
backup_lock_release($pdo); // auch bei Fehlern und vorzeitigem Abbruch freigeben
}
// ── FTP-Upload (optional) ────────────────────────────────────────────────────
$ftpHost = bset($pdo, 'ftp_host');