Hallo,
ich habe einen CronJob für Artikel Import porgrammiert mit dem dazugehörigen Artikelbilder Import, das funktioniert auch alles sehr gut, außer damit es einen Fehler gibt bei Shopware:
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 10972225 bytes) in .../engine/Shopware/Components/Thumbnail/Generator/Basic.php on line 221
Die Thumbnails werden wie folgt generiert:
// Media Variable
$media = new Media();
$media->setAlbumId($this->albumID);
/** @var Album $Album */
$Album = $this->getManager()->find('Shopware\Models\Media\Album', $this->albumID);
$media->setAlbum($Album);
$media->setFile($file);
$media->setName($image['filename']);
$media->setDescription($image['filename']);
$media->setCreated(new \DateTime());
$media->setUserId(0);
try { //persist the model into the model manager
$this->getManager()->persist($media);
$this->getManager()->flush();
} catch (ORMException $e) {
return $e->getmessage();
}
//generate thumbnails
if ($media->getType() === Media::TYPE_IMAGE) {
/**@var $manager \Shopware\Components\Thumbnail\Manager */
$manager = Shopware()->Container()->get('thumbnail_manager');
$manager->createMediaThumbnail($media, array(), true);
}
Das steht in der /Thumbnail/Generator/Basic.php Klasse :
/**
* @param resource $image
* @param array $originalSize
* @param array $newSize
* @param bool $extension
*
* @return resource
*/
private function createNewImage($image, $originalSize, $newSize, $extension)
{
// Creates a new image with given size
$newImage = imagecreatetruecolor($newSize['width'], $newSize['height']);
if (in_array($extension, ['jpg', 'jpeg'])) {
$background = imagecolorallocate($newImage, 255, 255, 255);
imagefill($newImage, 0, 0, $background);
} else {
// Disables blending
imagealphablending($newImage, false);
}
// Saves the alpha informations
imagesavealpha($newImage, true);
// Copies the original image into the new created image with resampling
imagecopyresampled(
$newImage,
$image,
0,
0,
0,
0,
$newSize['width'],
$newSize['height'],
$originalSize['width'],
$originalSize['height']
);
return $newImage;
}
Die verwendete Shopware Version: 5.2.27
Kennt jemand eine Lösung oder erkennt meinen Fehler?
Vielen Dank, im vorraus.
Mit freundlichen Grüßen,
Brian