Import oxNew('oxarticle') mit parentid ist sehr langsam

Hallo zusammen,

bei einem Import via $oArticle = oxNew(‘oxarticle’); … $oArticle->save(); steigt die Verarbeitungszeit pro importiertem Artikel bei hinzunahme einer parentid von ein paar Millisekunden auf weit über eine halbe Sekunde bis zu 1-2 Sekunden pro Artikel (je nachdem wie viele Artikel schon drin sind).

Da ich etwa 5000 Artikel (inkl. Varianten) importiere, dauert ein Import dann viel zu lang.

Als Vorlage für meine Importklasse dient mir das Magento-Importscript (magentoimport_for_oxid_eshop_v4).

Dort werden die Varianten per reinem SQL angelegt.

Ich vermute der Grund dafür ist genau das von mir geschilderte Performance-Problem und es gibt keinen anderen weg?

Im voraus Danke für eure Meinungen und Antworten :)!

Edit: Richtig gut ists auch nicht wenn man die Variantenartikel per SQL zuteilt…

[QUOTE=m10g;30084]

Dort werden die Varianten per reinem SQL angelegt.

Ich vermute der Grund dafür ist genau das von mir geschilderte Performance-Problem und es gibt keinen anderen weg?
…[/QUOTE]

Vermute ich auch.

Jedesmal wenn $oArticle->save() aufgerufen wird, sollte der entsprechende Masterartikel sich die Felder oxvar*…* in der oxarticle Tabelle neu berechnen… glaube ich.

Andere Wege gibt es bestimmt viele. ZB. eine erweiterte oxarticle-Klasse, welche den Master unter bestimmten (diese) Bedingung nicht ausführt… wenn ich richtig vermute :wink:
Dann natürlich anschließend alle Masterartikel nochmal laden und speichern, um die oxvar*…* Felder richtig zu füllen.

Generell wird ein Import über die Api immer länger dauern als per SQL.

GGf. alle Artikel als Master importieren und anschließend per SQL als Varianten deklarieren und dem Master zuordnen.
Natürlich auch hier wieder den Master sich die oxvar*…* Felder berechnen lassen… wenn es denn nun an diesen Feldern liegt… bin heute so unschlüssig. :rolleyes:

@oxid: Warum werden diese Felder nich ‘onthefly’ berechnet, sobald ein Artikel das [B]erste mal[/B](wenn die Felder is null sind) aufgerufen wird und dann in die DB geschrieben?
Würde Importprobleme geringer halten.

Danke für deine Antwort.

Ich importiere nun alle Produkte als Master und habe das die SQL-Statement für die Parent-Master und oxvar_* Anpassung aus dem Magento-Importer soweit optimiert, so dass ich etwa einen Gewschwindigkeitszuwachs von 900% habe.

Insgesamt ist das Ganze nun einigermaßen zufriedenstellened (knapp 150 Sekunden für 3500 Produkte inkl. Varianten, ohne Bildberechnen, pro Artikel dauert der Import via API nun etwa 50ms).

Für Tipps es noch schneller zu bekommen bin ich offen, denn es wartet noch ein anderer Shop mir ca. 25K Produkten (inkl. Varianten) ;). Auf den Import via API möchte ich aber recht ungern verzichten.