Fatal error: Allowed memory size of 67108864 bytes exhausted
- iNviNho
- Člen | 352
Ahojte chalani,
Upravujem starý projekt po kolegovi z konca roku 2014 kedy ešte fičalo
Nette 2.0 a pri použití knižnice Image.php
dostávam error:
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 14496 bytes) in /nfsmnt/hosting1_2/e/f/ef64d983-896d-4493-a2bf-cd669da275c0/XXXXX.com/web/vendor/nette/nette/Nette/common/Image.php:164
Kód:
<?php
$thumbSmallImg = Image::fromFile($values->thumbnail);
$thumbSmallImg->resize(290, 290);
$thumbSmallImg->save($newFilenameSmall, 90, Image::PNG);
?>
Skúšal som použiť
<?php
ini_set('memory_limit', '64M');
?>
Ale len skočí allowed memory size z 16777216 na 67108864.
Neviete aký môže byť fix?
- Pavel Kravčík
- Člen | 1196
Myslím, že IrfanView Ti to dokáže odhadnout hned. http://imgur.com/a/p2oll
- iNviNho
- Člen | 352
Obrázok:
Rozmery: 3572×4755, 240dpi
Veľkosť: 11.2mb
A zastaví sa to vo vnútri funkcie Image::fromFile() na riadku 164
<?php
return new static(imagecreatefromjpeg($file));
?>
Takže čo sa takýmito obrázkami? Povedať zákazníkovi, že obrázky nesmú byť väčšie ako ja neviem 4mb? Alebo do určíteho rozlíška?
- janpecha
- Backer | 75
Musíš se řídit podle rozlišení – u tohoto obrázku ti to dává v paměti nějakých 49 MB při použití 3 barevných kanálů, při použití 4 to už bude cca 65 MB, atd.
Alternativně můžeš použít rozšíření Imagick – to žere míň paměti a je i nepatrně rychlejší.
Editoval janpecha (26. 4. 2017 12:01)