API Einspielung/Update von Produkten | Performance

Hallo,

wir spielen aktuell unsere Produktinformationen tagesaktuell über die API ein. Wir brauchen bei 2.700 Produkten über 4 Stunden. Das wir aktuell noch im Testlauf sind und wir eigentlich > 10k Produkte haben, ist die Dauer natürlich irre. Wie geht ihr das ganze an?

LG Alex

nicht über die API sondern eine eigenes Plugin mit direktem Zugriff auf die Repos einspielen. Dauer bei vollständiger Neuanlage (Kategorien, Eigenschaften, Marken, Produkte, Varianten, Bilder - 6 Bilder pro Produkt) von ca. 4500 Produkten (inkl. Varianten) ca. 10 Minuten. Speicherauslastung liegt bei etwa 730MB. Hinsichtlich der Dauer muss ich aber anmerken, dass die Bilder auf einem externen Server liegen und erst in das eigene System gedownloaded werden müssen. Zudem erfolgt bei allem (Produkte, Bilder etc) immer noch die Prüfung auf Vorhandensein. Also Anlage wenn nicht vorhanden, sonst Update.

Das ist ja um Galaxien schneller als bei uns :open_mouth:
Könntest du das vielleicht näher erläutern?

Lg

das kann ich gern tun, wenn Du mir sagst/ schreibst, was Du genau wissen möchtest. Aber grds. war der Ansatz folgender: Der User, für den ich das Plugin gebaut habe ist wenig technikaffin. Für den Import füllt er, der Kunde) eine definierte CSV aus und speichert diese auf einem Server. Ein crom holt sich das FIle und verarbeitet es. Das Plugin hat eigene Tabellen und Views in der Datenbank. Es validiert zu Beginn alle Datensätze und reichert diese später um die erforderlichen Infos an. Von edr Logik gehen wir so vor, wie Du einen solchen Prozess auch schriftlich fixieren würdest. Also, erst bearbeiten der Marken/ Branches, dann Kategorien, dann Eigenschaften, dann Bilder und erst am Schluss zusammenführen der dann mit Sicherheit vorhandenen Marken, Eigenschaften etc. mit den Produktinfos und einspielen ins Shopware via ProduktRepo. Anlage von Marken, Eigenschaften, Kategorien erfolgt auch über die SW-Repos. Aber die Validierung, das Sammeln und Zusammenführen der Daten macht das Plugin mit eigener Logik. Eine Besonderheit sein noch zu erwähnen: In der CSV gibt es noch die Möglichkeit eigene, neu zu erstellende Filter (inkl. Translation) zu erstellen. Das ist es im Großen und Ganzen. Viel Performance haben wir herausgeholt in dem ich/wir Teile der Datenlogik aus PHP herausgenommen und an die Datenbank übertragen haben.

Danke für die ausführliche Antwort. Ist denn das Einspielen über die API grundsätzlich extrem langsam, oder ist unsere Art der Einspielung einfach nur extrem ineffizient und deshalb von so langer Dauer?

Gern. Naja, ich würde sagen, weder noch. Allerdings gibt es hinsichtlich Effizienz noch Luft nach oben. So wie die API aktuell gebaut ist kann Sie bezogen an die Performance nicht mit meinem/unserem Plugin mithalten. Was an vielen Stellen daran liegt, dass die zu leistende Arbeit nicht zwischen PHP und der Datenbank verteilt wird. Ganz viel wird im PHP erst in Arrays/ Objecten gesammelt bevor es eingespielt wird. Ist Eure Installation im Prod- oder Dev-Mode? Im Dev-Mode ist alles etwas langsamer, weil viel mitgeloggt wird.