Magento-Kataloge anreichern, ohne den Indexer zu beeinträchtigen

Viele Magento-Nutzer stehen vor demselben Problem. Sie haben Tausende von Produkten mit fehlenden Attributen, unzureichenden Beschreibungen oder fehlenden Übersetzungen.

Die Suche nach Datenquellen ist einfach. Der schwierige Teil ist es, diese Daten in Ihren Katalog einzupflegen, ohne Ihren Shop zum Absturz zu bringen.

Der häufigste Fehler besteht darin, eine einfache Schleife zu verwenden, um Produkte einzeln zu speichern.

Wenn Sie die save-Methode des Product Repositorys in einer Schleife verwenden, lösen Sie für jedes einzelne Element einen vollständigen Lifecycle aus. Sie führen Validierungen, Observer und Reindexing-Trigger tausende Male aus. Dies führt dazu, dass Skripte stundenlang laufen und Ihr Admin-Panel extrem verlangsamt wird.

Der Speicherpfad ist für Menschen konzipiert, die ein einzelnes Produkt bearbeiten. Er ist das falsche Werkzeug für Massenaktualisierungen.

Befolgen Sie diese Schritte, um Ihren Katalog sicher zu aktualisieren:

  • Nutzen Sie Massen-Attribut-Updates. Anstatt das gesamte Produktmodell zu speichern, verwenden Sie Magento\Catalog\Model\Product\Action. Nutzen Sie die updateAttributes-Methode, um direkt in die Datenbanktabellen zu schreiben. Führen Sie dies in Chargen von jeweils 1.000 bis 2.000 IDs durch.

  • Ändern Sie Ihre Indexer-Einstellungen. Stellen Sie Ihre Indexer vor Beginn auf „Update by Schedule“ um. Wenn Sie „Update on Save“ verwenden, löst jeder Schreibvorgang eine synchrone Reindexierung aus. Bei einem Zeitplan (Schedule) werden die Schreibvorgänge in ein Changelog geschrieben und der Cronjob erledigt die Arbeit.

  • Verwalten Sie Übersetzungen korrekt. Eine Übersetzung ist ein Attributwert für eine bestimmte Store View. Übergeben Sie die korrekte Store-ID an die updateAttributes-Methode. Überschreiben Sie nicht Ihre globalen Standardwerte, wenn Sie lokale Sprachen hinzufügen.

  • Gehen Sie mit KI-Inhalten vorsichtig um. LLMs schreiben hervorragende Texte, aber sie halluzinieren oft Fakten. Sie könnten behaupten, ein Hemd sei aus Baumwolle, obwohl es aus Polyester besteht. • Schreiben Sie KI-Inhalte zuerst in ein Staging-Feld oder einen deaktivierten Scope. • Überprüfen Sie eine kleine Stichprobe, bevor Sie live gehen. • Behalten Sie technische Spezifikationen wie Maße und Materialien aus verifizierten Daten bei.

Zusammenfassung für die Massenanreicherung:

  1. Indexer auf den Zeitplan-Modus (Scheduled Mode) umstellen.
  2. Ein Staging-Feld für neue Daten verwenden.
  3. Updates in Chargen von 1.000 bis 2.000 IDs anwenden.
  4. Den vollständigen Produkt-Speicherpfad vermeiden.
  5. Die Änderungen neu indexieren.
  6. Eine Stichprobe Ihrer Produktseiten testen.

Datenquellen sind der einfache Teil. Die Verwaltung eines Live-Katalogs erfordert einen anderen Ansatz.

Quelle: https://dev.to/iamrobindhiman/enriching-a-large-magento-catalog-without-melting-the-indexer-3mk9