From 43178483e5fc342439efaf006ac1007fa85e4d47 Mon Sep 17 00:00:00 2001 From: Terranom674 Date: Thu, 3 Sep 2026 15:57:22 +0200 Subject: [PATCH] Exclude WebDAV images from legacy cache worker totals --- main-cache-build.php | 42 ++++++++++++++++-------------------------- 1 file changed, 16 insertions(+), 26 deletions(-) diff --git a/main-cache-build.php b/main-cache-build.php index 6a92ef8..1d700f5 100644 --- a/main-cache-build.php +++ b/main-cache-build.php @@ -23,7 +23,7 @@ $_SERVER['REQUEST_URI'] = '/'; $_SERVER['SCRIPT_NAME'] = '/plugins/bratonien_tools/main-cache-build.php'; $_SERVER['PHP_SELF'] = $_SERVER['SCRIPT_NAME']; $_SERVER['QUERY_STRING'] = ''; -$_SERVER['HTTP_USER_AGENT'] = 'Bratonien-Piwigo-Cache-Builder/1.4'; +$_SERVER['HTTP_USER_AGENT'] = 'Bratonien-Piwigo-Cache-Builder/1.5'; $_SERVER['HTTPS'] = 'off'; require_once(PHPWG_ROOT_PATH.'include/common.inc.php'); @@ -208,7 +208,18 @@ function bratonien_tools_cache_builder_worker($worker_index, $worker_count, $run $result = pwg_query('SELECT * FROM '.IMAGES_TABLE.' ORDER BY id'); while ($row = pwg_db_fetch_assoc($result)) { - if (((int)$row['id'] % $worker_count) === $worker_index) + $image_id = (int)$row['id']; + + // WebDAV-Bilder gehören vollständig in den materialisierenden Rebuild-/Warmup-Pfad. + // Sie dürfen im Legacy-Worker weder erzeugt noch als "übersprungen" gezählt werden, + // weil das die Fortschrittsanzeige nach einem Cache-Leeren fälschlich wie einen + // abgeschlossenen Lauf aussehen lässt. + if (bratonien_tools_webdav_materialize_source_info($image_id)) + { + continue; + } + + if (($image_id % $worker_count) === $worker_index) { $rows[] = $row; } @@ -230,7 +241,6 @@ function bratonien_tools_cache_builder_worker($worker_index, $worker_count, $run $source_path = $src->get_path(); $image_id = (int)$image_row['id']; $metadata = null; - $webdav_source = bratonien_tools_webdav_materialize_source_info($image_id); foreach ($variants as $variant_name => $requested_params) { @@ -251,27 +261,6 @@ function bratonien_tools_cache_builder_worker($worker_index, $worker_count, $run $derivative = new DerivativeImage($requested_params, $src); $target_path = $derivative->get_path(); - // WebDAV-Connector-Bilder besitzen absichtlich nur einen Placeholder als - // lokale Quelle. Der alte Full-Cache-Builder darf diesen niemals direkt - // rendern. Fehlende Connector-Derivate gehören ausschließlich in den - // materialisierenden WebDAV-Warmup-/On-Demand-Pfad. - if ($webdav_source) - { - if ( - strpos($target_path, PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR) === 0 - && is_file($target_path) - && is_readable($target_path) - ) - { - $cached++; - } - else - { - $skipped++; - } - continue; - } - if (strpos($target_path, PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR) !== 0) { $skipped++; @@ -497,7 +486,7 @@ for ($i=0; $i<$worker_count; $i++) } } -$running_message = sprintf('Piwigo-Bildcache wird mit %d parallelen Worker(n) aufgebaut.', $worker_count); +$running_message = sprintf('Piwigo-Bildcache wird mit %d parallelen Worker(n) aufgebaut. WebDAV-Bilder laufen getrennt über den Piwigo-Rebuild.', $worker_count); bratonien_tools_write_main_cache_status(array( 'state'=>'running', 'message'=>$running_message, @@ -546,7 +535,7 @@ $state = bratonien_tools_cache_builder_aggregate( $worker_count, $was_cancelled ? 'Piwigo-Bildcache-Aufbau wurde abgebrochen.' - : ($exit_error ? 'Piwigo-Bildcache beendet; mindestens ein Worker meldete einen Prozessfehler.' : 'Piwigo-Bildcache wurde aufgebaut.') + : ($exit_error ? 'Piwigo-Bildcache beendet; mindestens ein Worker meldete einen Prozessfehler.' : 'Lokaler Piwigo-Bildcache wurde aufgebaut; WebDAV-Bilder laufen getrennt über den Piwigo-Rebuild.') ); for ($i=0; $i<$worker_count; $i++) @@ -560,3 +549,4 @@ fclose($lock); @unlink($lock_path); exit(($state === 'error' || $exit_error) ? 1 : 0); +}