Vom: 13.07.2018
Ein gängiger Weg den wir oft sehen um in Pimcore Assets anzulegen sieht folgendermaßen aus:
<?php
$data = str_get_contents("/blah/fasel/file.png");
$asset = new Asset\Image();
$asset->setParentId($parent_id);
$asset->setUserOwner(1);
$asset->setUserModification(1);
$asset->setFilename($asset_name);
$asset->setData($data);
$asset->save();
Dieser Weg funktioniert, wird aber bei sehr großen Dateien schnell unhandlich, langsam und hat das Potential, das Speicherlimit zu überschreiten.
Besser ist es hier, Streams zu benutzen:
<?php $stream = fopen($filename, "r+"); $asset = new Asset\Image(); $asset->setStream($stream); $asset->setParentId($parent_id); $asset->setUserOwner(1); $asset->setUserModification(1); $asset->setFilename($asset_name); $asset->save();
Auf diese Weise kümmert sich PHP um die häppchenweise Verarbeitung, was schneller abläuft und mit den gängigen Limits funktioniert.