Ejecutar el procesamiento por lotes sobre la biblioteca de medios existente
Was der Lauf tut — und was vorher eingeschaltet sein muss
Die beiden Bildmodule von Kakapo Performance arbeiten in dem Moment, in dem WordPress die Bildgrößen erzeugt: die Kompression setzt die Qualität und entfernt EXIF-, IPTC- und XMP-Marker aus den erzeugten Größen, das Format-Modul legt die WebP- und AVIF-Ableitungen an. Beides wirkt damit ab dem nächsten Upload. Für Bilder, die schon in der Mediathek liegen, passiert nichts — und genau diese Lücke schließt der Stapellauf.
Der Lauf erfindet keine Arbeit. Er wendet auf den Bestand genau das an, was du weiter oben für neue Uploads eingeschaltet hast: WebP und/oder AVIF, und „Metadaten entfernen“. Ist nichts davon an, ist der Startknopf gesperrt und nennt den Grund — etwa dass der Server kein WebP schreiben kann oder dass schlicht keine Einstellung aktiv ist. Du findest die Karte „Bestehende Mediathek nachbearbeiten“ im Bereich „Bilder“ unterhalb der Bild-Einstellungen; die Reihenfolge in der Oberfläche entspricht der Reihenfolge der Bedienung: erst einstellen, dann über den Bestand laufen lassen.
Angefasst werden ausschließlich Anhänge vom Typ JPEG und PNG, die nicht im Papierkorb liegen. Die Zeile „JPEG-/PNG-Bilder im Bestand“ nennt dir die Zahl, bevor du startest.
Starten, zusehen, anhalten
Ein Klick auf „Stapellauf starten“ legt den Lauf an und beginnt sofort. Die Arbeit passiert in Durchgängen mit einem Zeitbudget von 8 Sekunden; danach meldet der Durchgang zurück, die Anzeige wird aktualisiert und der nächste startet nach 200 Millisekunden. Steht am Ende eines Durchgangs weniger als 3,5 Sekunden Restzeit, wird kein weiterer Anhang mehr angefangen — das Format-Modul rechnet intern mit mindestens drei Sekunden je Bild. Auf Servern mit gesetzter max_execution_time wird das Budget zusätzlich auf 80 Prozent dieser Grenze gedeckelt, damit der Durchgang nicht mitten im Request abgeschnitten wird.
Der Balken zeigt echten Fortschritt: Anzahl erledigter Anhänge geteilt durch die Gesamtzahl. Darunter stehen die laufenden Zahlen — erzeugte und übersprungene Ableitungen, je eine Zeile für WebP und AVIF, dazu entschlackte Dateien und freigewordene Bytes. Ganz unten laufen die letzten 14 Protokollzeilen mit, jeweils mit Dateiname und dem, was bei dieser Datei herauskam.
„Anhalten“ stoppt den Lauf. Der Knopf heißt danach „Fortsetzen“, und der nächste Start macht genau bei dem Anhang weiter, an dem er stehen blieb. Dasselbe passiert, wenn du den Tab einfach schließt: der Lauf hält an, verloren geht nichts. Öffnest du die Seite wieder, fragt sie den Zustand ab und treibt einen noch offenen Lauf von selbst weiter.
Wie der Lauf einen Abbruch übersteht
Der Stand wird vor der Arbeit an jedem einzelnen Anhang gespeichert, nicht erst danach. Stirbt ein Durchgang mittendrin — Ausführungsgrenze des Webservers, Arbeitsspeicher, eine Datei, an der GD sich verschluckt —, dann weiß der nächste Durchgang, wo es hakte. Bleibt derselbe Anhang drei Anläufe lang ohne jeden Fortschritt, wird er mit einer Klartext-Zeile im Protokoll übergangen, statt den Lauf dauerhaft an einer Datei festzuhalten.
Zwei gleichzeitig geöffnete Verwaltungsseiten können sich nicht in die Quere kommen: eine Sperre lässt immer nur einen Durchgang zu. Wird ein Durchgang vom Webserver abgeschossen und bleibt die Sperre liegen, gilt sie nach 180 Sekunden als verwaist und wird übernommen.
Beim Fortsetzen wird die Gesamtzahl neu ermittelt statt eingefroren — zwischen Anhalten und Fortsetzen kann hochgeladen oder gelöscht worden sein. Schaltest du mitten im Lauf alle Bild-Einstellungen aus, hält er sich selbst an, statt Arbeit zu verrichten, die niemand mehr angeordnet hat. „Zurücksetzen“ verwirft Fortschritt und Bericht; die bereits erzeugten Dateien bleiben liegen.
Den Bericht richtig lesen
Am Ende steht eine Schlusszeile mit gemessenen Dateigrößen — keine Schätzungen. Für jede erzeugte Ableitung vergleicht der Lauf die Größe der Vorlage mit der Größe des Ergebnisses, beides echte Werte aus dem Moment der Erzeugung. Gezählt wird nur, was in diesem Lauf neu entstanden ist; was schon beim Upload umgewandelt wurde, taucht nicht noch einmal auf.
Drei Dinge stehen dort bewusst so und nicht schöner: WebP und AVIF bekommen getrennte Zeilen, weil zu derselben Vorlage zweimal eine Ableitung entsteht — eine gemeinsame Summe zählte die Vorlage doppelt. Die Prozentwerte gelten deshalb je Zeile und dürfen nicht addiert werden; ein Browser holt sich immer nur eines der beiden Formate. Und die neuen Dateien belegen zusätzlich Platz auf der Festplatte: gespart wird bei der Übertragung an den Besucher. Speicherplatz wirklich frei gibt allein das Entfernen der Metadaten, und diese Bytes stehen in einer eigenen Zeile.
Wurde nichts erzeugt, sagt der Bericht auch das: entweder war für den Bestand bereits alles erledigt, oder kein Ergebnis war kleiner als seine Vorlage. Ein Ergebnis, das nicht kleiner ist, wird verworfen und als „übersprungen“ gezählt — nie als Gewinn.
Wenn etwas übersprungen wird
Jede nicht erzeugte Ableitung bekommt einen Grund im Klartext, und die Gründe stehen gesammelt in der Schlusszeile:
• „nicht kleiner als die Vorlage“ — normal, die Vorlage bleibt. • „zu groß für den verfügbaren Arbeitsspeicher“ — das Format-Modul prüft die Bildmaße vor dem Decodieren und lehnt ab, statt PHP ins Speicherlimit laufen zu lassen. • „am Zielort lag bereits eine Datei“ — sie wird nicht überschrieben. Das passiert typischerweise, wenn die Notiz am Anhang verloren ging, die Dateien aber noch liegen. • „nicht lesbar“ — defekt, CMYK-JPEG oder eine exotische Variante. • „nicht schreibbar“ — die Rechte im Uploads-Ordner prüfen. • „Format auf diesem Server nicht verfügbar“ — AVIF setzt PHP 8.1 oder neuer mit libavif voraus, WebP eine GD-Bibliothek mit libwebp.
Zwei Dinge, die häufig für Fehler gehalten werden, aber keine sind: Ein zweiter Lauf zeigt kaum noch Bewegung, weil Erledigtes nicht wiederholt wird — ein Merker am Anhang hält fest, für wie viele Dateien das Entfernen der Metadaten schon erledigt ist. Und wer eine Qualitätsstufe ändert, erneuert damit keine bereits erzeugte Datei; dafür müssten die Ableitungen erst weg.