Dispatch priority warmup only for changed WebDAV content

This commit is contained in:
Terranom674
2026-09-03 22:39:28 +02:00
parent c819861c91
commit 1ae9f2acc4

View File

@@ -31,23 +31,28 @@ result=0
for config in "${webdav_configs[@]}"; do for config in "${webdav_configs[@]}"; do
name="$(basename "$config")" name="$(basename "$config")"
echo "NC Connector WebDAV: $name" echo "NC Connector WebDAV: $name"
state_dir="$(PIWIGO_CONFIG="$config" bash -c 'source "$PIWIGO_CONFIG"; printf "%s" "${STATE_DIR:-}"')"
change_file="${state_dir%/}/webdav-sync-content-changed"
if env PIWIGO_CONFIG="$config" bash "$SCRIPT_DIR/sync-webdav.sh"; then if env PIWIGO_CONFIG="$config" bash "$SCRIPT_DIR/sync-webdav.sh"; then
# Ein neues Album soll nicht bis zur periodischen Einzelbildprüfung # Nur ein tatsaechlich geaenderter Connector-Bestand darf einen
# warten. Direkt nach dem vollständig erfolgreichen Sync dieser # laufenden Cache-Rebuild priorisiert unterbrechen. Ein erfolgreicher
# Verbindung darf der Warmup gezielt nur diese Verbindung prüfen. # Sync ohne Aenderung ist kein neuer Inhalt.
if [[ -f "$SCRIPT_DIR/webdav-warmup-dispatch.php" && "$name" =~ ^webdav-connection-([0-9]+)\.conf$ ]]; then if [[ -f "$change_file" && -f "$SCRIPT_DIR/webdav-warmup-dispatch.php" && "$name" =~ ^webdav-connection-([0-9]+)\.conf$ ]]; then
connection_id="${BASH_REMATCH[1]}" connection_id="${BASH_REMATCH[1]}"
php "$SCRIPT_DIR/webdav-warmup-dispatch.php" --mode=sync --connection-id="$connection_id" || result=1 php "$SCRIPT_DIR/webdav-warmup-dispatch.php" --mode=sync --connection-id="$connection_id" || result=1
rm -f -- "$change_file"
else
echo "NC Connector WebDAV: keine Inhaltsaenderung, kein priorisierter Warmup erforderlich."
fi fi
else else
result=1 result=1
fi fi
done done
# Einzelne neue/geänderte Bilder in bereits bekannten Alben werden nur über # Einzelne neue/geänderte Bilder in bereits bekannten Alben werden weiterhin
# die periodische Eingangsprüfung behandelt. Der Dispatcher liest zunächst nur # über die periodische Eingangsprüfung behandelt. Der Dispatcher startet die
# den Warmup-State und startet die eigentliche Prüfung erst, wenn das im Plugin # eigentliche Prüfung erst, wenn das konfigurierte Intervall fällig ist.
# konfigurierte Intervall (Standard: 12 Stunden) wirklich fällig ist.
if [[ "$result" -eq 0 && -f "$SCRIPT_DIR/webdav-warmup-dispatch.php" ]]; then if [[ "$result" -eq 0 && -f "$SCRIPT_DIR/webdav-warmup-dispatch.php" ]]; then
php "$SCRIPT_DIR/webdav-warmup-dispatch.php" --mode=periodic || result=1 php "$SCRIPT_DIR/webdav-warmup-dispatch.php" --mode=periodic || result=1
fi fi