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');
+15
View File
@@ -0,0 +1,15 @@
<?php
if (php_sapi_name() !== 'cli' && !defined('DESKHUB_CRON_RUNNER')) { http_response_code(403); exit('Kein Web-Zugriff.'); }
require_once __DIR__ . '/../includes/bootstrap.php';
function run_status_checks(PDO $pdo, bool $verbose = false): array
{
$count = status_run_component_checks($pdo);
set_setting('cron_status_checks_last_run', db_now());
return ['checked' => $count, 'log' => ['Statusprüfung abgeschlossen: ' . $count . ' Dienst(e) geprüft.']];
}
if (php_sapi_name() === 'cli') {
$result = run_status_checks(get_db(), true);
foreach ($result['log'] as $line) echo '[' . date('Y-m-d H:i:s') . '] ' . $line . PHP_EOL;
}