[CronJob] Shopware Thumbnail Generator

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

Hast du denn die Mindestvoraussetzungen erfüllt? Laut Meldung hat der Prozess nur ~134MB und keine 256MB, die ja Mindestvoraussetzung sind.

1 „Gefällt mir“

@Moritz Naczenski schrieb:

Hast du denn die Mindestvoraussetzungen erfüllt? Laut Meldung hat der Prozess nur ~134MB und keine 256MB, die ja Mindestvoraussetzung sind.

Bei der Installation von Shopware haben wir die Mindestvorraussetzungen erfüllt da unser server 6 GB Arbeitspeicher hat. 
Und selbst während dem Prozess noch 1,2 GB frei hat.
Ich werde mich jetzt daran setzten dem Prozess mehr Arbeitsspeicher zuweisen.

Danke sehr.   

@Moritz Naczenski schrieb:

Hast du denn die Mindestvoraussetzungen erfüllt? Laut Meldung hat der Prozess nur ~134MB und keine 256MB, die ja Mindestvoraussetzung sind.

Vielen Dank Moritz, 

habe das Problem mit ini_set im Command gelöst: 

    /**
     * @param OutputInterface $output
     * @return bool
     */
    protected function start(OutputInterface $output, $type)
    {
        // enabled the full memory thats available.
        ini_set('memory_limit', '-1');
        
        // weiterer Code
        ......
     }