Ich habe ein Import-Script, mit dem ich XML-Dateien verarbeite. Jede XML-Datei beinhaltet einen Datensatz. Diese werden in 30er Schritten nacheinander über den Scheduler abgearbeitet.
Wenn ich nur eine einzelne XML-Datei einspiele klappt alles reibungslos.
Wenn ich aber mehrere (also zum Beispiel 30) XML-Dateien in einem Zug einspiele passiert es zum Teil, dass die Bilder doppelt importiert werden.
Das Script sieht so aus:
$newTour->removeAllImagesFromGallery();
$indexBild = NULL;
if(!is_array($reise['bild'])) $reise['bild'] = array();
foreach($reise['bild'] as $bild) {
if($bild['@attributes']['dateiname'] && !is_array($indexBild)) {
$indexBild = $bild;
}
}
if(is_file(\TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName($this->settings['sourceFolder']) . $indexBild['@attributes']['dateiname'])) {
if ($storage->hasFile('/' . $this->settings['uploadFolder'] . $indexBild['@attributes']['dateiname'])) {
$fileObject = $storage->getFile('/' . $this->settings['uploadFolder'] . $indexBild['@attributes']['dateiname']);
} else {
$fileObject = $storage->addFile(\TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName($this->settings['sourceFolder']) . $indexBild['@attributes']['dateiname'], $saveFolder, $indexBild['@attributes']['dateiname']);
}
$fileReference = $this->objectManager->get('VENDOR\\MyExt\\Domain\\Model\\FileReference');
/* @var $fileReference \VENDOR\MyExt\Domain\Model\FileReference */
$fileReference->setFile($fileObject);
$newTour->setImage($fileReference);
}
Die Bilder-Referenzen werden mit "$newTour->removeAllImagesFromGallery()" ordnungsgemäß entfernt.
Das einzige, was ich nicht im Verdacht habe ist der Persistence Manager, da im weiteren Bereich noch aufgerufen wird, wenn bestimmter Unter-Objekte angelegt werden.
Gibt es einen Trick, dass Bilder nicht doppelt vergeben werden.