Fehler bei Datenbank Transactions

Hey! Ich habe folgendes Problem: Ich importiere Artikel über einen Cronjob in die Datenbank. Diese kommen aus einer CSV Datei. Für jeden Artikel starte ich eine eigene Transaction und feuer diese so an die Datenbank. Shopware()-\>Db()-\>beginTransaction(); Shopware()-\>Db()-\>exec($sql); Shopware()-\>Db()-\>commit(); Nun zu meinem Problem. Bei höheren Artikelanzahlen schmeißt der Cron immer folgenden Fehler: exception ‘PDOException’ with message ‘There is already an active transaction’ Hat jemand da Erfahrungen? Gibt es eine Möglichkeit eine neue Transaction erst dann zu starten, wenn die aktuelle durch ist? Viele Grüße

Hallo auch! Ich spiel zwar ungern den Totengräber für alte Threads, aber das Problem ist uns kürzlich auch begegnet und scheint daher noch aktuell zu sein.
Die Lösung ist denkbar einfach, man muss nur über den ModelManager gehen, statt über das Globale Datenbank-Objekt.

Also z.B. wie folgt:

$this->getModelManager()->beginTransaction();
try {
    // doSomething()
    $this->getModelManager()->commit();
} catch(Exception $e) {
    $this->getModelManager()->rollback();
    throw $e;
}

Alternativ und wie ich finde deutlich eleganter (commit/rollback automatisch!):

$this->getModelManager()->transactional(function() use(/* add variables from outside to use inside! */) {
    // doSomething()
});

Gut möglich das ihr den ModelManager in eurem Service/eurer Klasse erst noch holen müsst.
Ein paar Beispiele:

$this->models
$this->getManager()
$this->getModelManager()
$this->container->get('models')
Shopware()->Models()

Gruß Ruben