Autor Zpráva
Mufna
Profil
Zdravím Vás. Při pokusu nahrát fotky vlastním skriptem jsem obdržel tuto hlášku:

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 6400 bytes) in /storage/www1/5/site40865/wwwroot/upload_multi.php on line 130

Ř. 130:
$dst = ImageCreateTrueColor($width,$height);

Obrázky měly 1600x1200 px, formát JPG, a nahráváno bylo celkem 8 obrázků přes multiuploadovací formulář. Když jsem je zmenšil na 800x600, šlo už všechno nahrát v pohodě. Jinak datový limit nebyl překročen ani v prvním případě (je přímo ve skriptu nastaven na 0,5 MB) - původní obrázky měly cca. 300-450 kb, zmenšené mají 150-250 kb.

Již jsem přes svůj formulář a skript nahrával obrázky vícekrát, ale toto se mi stalo poprvé. Nevíte někdo, čím to mohlo být ? Že by těmi rozměry 1600x1200 px ? Ale proč ?
keeehi
Profil *
Allowed memory size of 16777216 bytes exhausted -> překlad: povolená velikost paměťi 16777216 bytů byla plně obsazená.

takže to bude asi objemovou velikostí
bukaj
Profil
Mufna
Jinak datový limit nebyl překročen ani v prvním případě (je přímo ve skriptu nastaven na 0,5 MB) - původní obrázky měly cca. 300-450 kb, zmenšené mají 150-250 kb.
Datový limit pro POST data možná ne, ale pro alokovanou paměť serveru (počítače) ano. Musíš brát v úvahu, že JPEG komprimuje obrázek, co to jde, ale GD knihovna nemůže pracovat s komprimovanou podobou, proto si musí alokovat více (o hodně více) paměti. Což dokazuje i to, že při zmenšení rozměrů limit překročen nebyl.

Podíval bych se, být tebou, jestli skript uvolňuje všechny obrázky správně a neplýtvá tak pamětí. Pak jedině pomůže zvednout memory_limit.
nightfish
Profil
mohlo by pomoct použít imagedestroy, jakmile s obrázkem přestaneš pracovat (tzn. asi po nějakém imagejpeg, imagepng, ...)
konkrétněji to bez zdrojového kódu skriptu nepůjde
Mufna
Profil
nightfish

imagedestroy() používám - skript mi vytváří i 2 zmenšené náhledy (cca. 160x120 a 90x70) - používám to na konci skriptu i na ně. Tzn.

ImageDestroy($src);
ImageDestroy($dst);
ImageDestroy($dst2);

bukaj
Podíval bych se, být tebou, jestli skript uvolňuje všechny obrázky správně a neplýtvá tak pamětí

Myslel si tím to samé, co nightfish - tzn. imagedestroy() ?

Skript pracuje s cyklem foreach, takže (jestli to správně chápu) projede jeden obrázek, pak další atd. Osobně (neříkám, že tomu buhvíjak rozumím) si myslím, že to mohl způsobovat jen jeden konkrétní obrázek.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: