Große Websites und knappe Zeitlimits

Auf einer Website mit einigen tausend Mediendateien und vielen Beiträgen ist ein Scan viel Arbeit. Damit er trotzdem durchläuft — auch bei Anbietern, die Rechenzeit knapp halten — arbeitet Media Organizer nicht in einem Stück, sondern in Schritten.

Was ein Schritt ist

Beim Klick auf Scannen holt die Übersicht sich immer wieder ein kleines Stück Arbeit vom Server: ein paar hundert Dateien, ein paar hundert Datensätze. Nach jedem Stück schreibt der Server auf, wie weit er gekommen ist, und meldet den Stand zurück. Wie lange ein Scan dauert, zeigt sich deshalb in der Anzahl der Schritte — nicht in der Länge eines einzelnen. Genau das ist der Punkt: Ein Server bricht einen Vorgang ab, der zu lange dauert, aber er zählt nicht mit, wie viele kurze Vorgänge nacheinander kommen.

Während des Scans sehen Sie, woran er gerade arbeitet („Dateien werden erfasst…", „Referenzen werden gesammelt: Beiträge"), wie weit die laufende Phase ist, was bisher gefunden wurde und wie lange er schon läuft.

Der Fortschritt liegt in der Datenbank, nicht im Browser. Sie können das Fenster schließen, den Rechner ausschalten oder unterwegs auf eine andere Seite wechseln — der Scan steht dann still, ist aber nicht verloren. Beim nächsten Öffnen der Übersicht bietet Media Organizer Scan fortsetzen an.

Wenn ein Schritt abbricht

Meldet Media Organizer, dass der Server einen Schritt abgebrochen hat, ist fast immer das Zeitlimit des Servers erreicht worden. Dann gilt:

  1. Scan fortsetzen klicken. Der Lauf macht an derselben Stelle weiter; die bisherige Arbeit bleibt erhalten.
  2. Bricht es erneut ab, in den Optionen unter Leistung die Schrittgröße verringern — siehe unten.
  3. Hilft auch das nicht, den Scan als geplante Aufgabe oder über die Kommandozeile laufen lassen.

Die Schrittgröße einstellen

Optionen → Leistung:

Einstellung Vorgabe Bedeutung
Dateien je Scan-Schritt 200 Wie viele Dateien ein Schritt erfasst und prüft.
Datensätze je Scan-Schritt 500 Wie viele Beiträge, Module und andere Datensätze ein Schritt nach Verweisen durchsucht.
Höchstdauer je Scan-Schritt 10 Sekunden Ein Schritt endet spätestens nach dieser Zeit, auch wenn die eingestellte Menge noch nicht erreicht ist.

Kleinere Werte machen jeden Schritt kürzer und den Gesamtlauf etwas länger. Das ist der Tausch, um den es geht: Ein Scan, der zehn Minuten braucht, aber durchläuft, ist besser als einer, der nach drei Minuten abbricht.

Die Höchstdauer ist die Notbremse für den Fall, dass einzelne Datensätze unerwartet teuer sind — ein Beitrag mit sehr viel Text, Mediendateien auf einem Netzlaufwerk. Sie sollte deutlich unter dem Zeitlimit Ihres Servers liegen; die Vorgabe von 10 Sekunden passt zu den üblichen 30 Sekunden.

Der zweite Scan ist billiger als der erste

Media Organizer bildet für jede Datei eine Prüfsumme — daran erkennt er Duplikate und nachträgliche Änderungen. Das ist der Teil, der die meiste Zeit kostet, denn dafür muss jede Datei einmal vollständig gelesen werden.

Beim nächsten Scan passiert das nur noch für Dateien, deren Größe oder Änderungsdatum sich unterscheidet. Auf einer Website, auf der zwischen zwei Scans zwanzig Bilder dazugekommen sind, werden auch nur diese zwanzig gelesen.

Scannen ohne Browser

Bei sehr großen Beständen ist der Browser nicht der beste Ort für einen Scan. Zwei Wege führen daran vorbei:

Beide teilen sich denselben Fortschritt mit der Oberfläche. Ein Scan, den Sie im Backend begonnen haben, kann von der geplanten Aufgabe zu Ende gebracht werden — und umgekehrt.

Das Protokoll

Geht technisch etwas schief — ein abgebrochener Schritt, ein Suchbereich, der nicht gelesen werden konnte —, schreibt Media Organizer das in die Datei jimgo.php im Protokollordner Ihrer Website (der Pfad steht in System → Globale Konfiguration → System → Pfad zum Protokollordner). Eine Zeile sieht so aus:

2026-09-12T14:22:31+00:00	ERROR	A scan step failed. [scan=118 phase=providers error=… where=…]

Ab Werk werden nur Fehler aufgezeichnet; das schreibt im Normalbetrieb so gut wie nie. Unter Optionen → Protokoll lässt sich das umstellen — „Alles" zeichnet auch Beginn und Abschluss jedes Scans auf und ist als Dauereinstellung nicht gedacht.

Wenn Sie uns ein Problem melden, ist diese Datei das Nützlichste, was Sie mitschicken können.

Wenn es weiterhin klemmt

Ein Hinweis für das Gespräch mit Ihrem Anbieter: Die PHP-Einstellung max_execution_time ist oft nicht die Ursache. Sie zählt Wartezeit auf die Datenbank und auf Dateizugriffe nicht mit — und daraus besteht ein Scan zum größten Teil. Was einen Scan abbricht, ist meist das Zeitlimit des Webservers davor (bei nginx fastcgi_read_timeout, bei PHP-FPM request_terminate_timeout). Danach sollten Sie fragen, wenn die Schrittgröße nicht mehr hilft.

English version


Revision #3
Created 2026-09-12 14:00:45 UTC by Norbert Graup
Updated 2026-09-12 14:46:55 UTC by Norbert Graup