Magento 2 – Produkt-Attribute aktualisieren wird gequeued aber nicht ausgeführt

Wieder so ein nerviges Problem von Magento 2 – die Queue zur Ausführung von Aufgaben wie Produktexporten oder auch der ganz einfachen Aktualisierung von Produktattributen bei mehreren Produkten auf einmal („Batch“).

Das Vorgehen ist dabei ganz einfach: Man möchte bei mehreren Produkten eine Änderung an einem oder mehreren Produkt-Attributen durchführen. Wie auch schon bei Magento 1 klickt man dazu die gewünschten Produkte in der Produkt-Übersicht an und wählt „Update Attributes“ bzw. „Attribute aktualisieren“ aus dem Dropdown. Anschließend wählt man die Attribute, die man ändern will und verändert den Wert.

Nun sollten nach dem Klick auf Speichern -so war man es gewöhnt- bei den gewählten Produkten das entsprechende Attribut überarbeitet sein.

Nicht aber so bei Magento 2. Magento 2 fügt diese Aufgabe der Queue also einer zeitgesteuerten Abarbeitungsliste hinzu. Diese sollte dann durch den Cronjob / die Cronjobs abgearbeitet werden, so dass die Aufgaben zeitnah erfüllt werden.

Bei uns war es aber auch in Magento 2.4.2 weiterhin so, dass die gewünschten Änderungen nicht durchgeführt wurden und die Attribute bei den Produkten unverändert blieben. Dies forderte also wieder einiges an Zeit und Nerven für die Recherche aber am Ende gab es immerhin ein funktionales Ergebnis. Und dieses ist Folgendes:

  1. Führt man per Konsole (SSH) einmal diesen Befehl im Root-Verzeichnis von Magento aus „ps aufx | grep cron“ – werden die aktuellen Cron-Aufgaben angezeigt. Hier stellten wir fest, dass die Jobs da waren aber nicht ausgeführt wurden.
  2. Magento 2 verhindert durch sog. „locks“ die Mehrfachausführung eines Jobs. Diese Locks werden standardmäßig in der Datenbank abgelegt. Hier fanden wir Informationen, die über Probleme berichteten, wenn die DB genutzt wird und so probierten wir den Speicherort auf das Datei-Verzeichnis zu ändern, um das Problem der Nichtausführung entgegen zu wirken.
  3. Man kann sehen wo die Locks hinterlegt werden, wenn man in die app/etc/env.php reinschaut. Dort gibt es ca. in Zeile 51 einen Verweis „‚provider‘ => ‚db‘,
  4. Wahrscheinlich kann man an dieser Stelle auch manuell eingreifen und diesen Absatz so ändern:
    'lock' => [
        'provider' => 'file',
        'config' => [
            'path' => 'var/locks'
        ]
    ],

Wir haben es aber über diesen Befehl in der Konsole gemacht:

bin/magento setup:config:set --lock-provider="file" --lock-file-path="var/locks"

(Evtl. muss man noch das Verzeichnis anlegen)
5. Nachdem dies geschehen war, haben den Cron nochmal manuell ausgeführt

bin/magento cron:run

Im Verzeichnis /var/locks/ lagen nun einige (leere) Dateien, die die Lockdateien darstellen.

Und siehe da – die Produkt-Updates waren alle durchgeführt worden.

Published by Covos

Seit 2009 arbeite ich nun intensiv mit Magento. Begonnen habe ich mit der Erstellung und dem Betrieb von B2C-Shops. Ausgeweitet wurde dies durch meine Tätigkeit im Logistik-Sektor. Hieraus entstanden erste spezialisierte B2E-Systeme. Heute arbeite ich tag-täglich mit spannenden B2C-, B2B- und B2E-Projekten und berichte in diesem Blog über Herausforderungen und gebe Insider-Tipps.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.