Skip to main content

Große Websites und knappe Zeitlimits

WirdAuf synchronisierteiner 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:

    Scan fortsetzen klicken. Der Lauf macht an derselben Stelle weiter; die bisherige Arbeit bleibt erhalten. Bricht es erneut ab, in den Optionen unter Leistung die Schrittgröße verringern — siehe unten. 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:

      Die geplante Aufgabe. Sie bringt einen großen Scan über mehrere Durchgänge zu Ende: Jeder Durchgang arbeitet eine Weile und der nächste setzt fort. Die E-Mail kommt, wenn der Scan fertig ist — nicht nach jedem Durchgang. Die Kommandozeile. Dort gibt es kein Zeitlimit; der Scan läuft am Stück und zeigt seinen Fortschritt mit.

      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.

      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.