Čištění zanesené paměti
- maarlin
- Člen | 207
Vysktuje se mi tato „standardní“ chyba.
Allowed memory size of ... bytes exhausted (tried to allocate ... bytes)
Objeví se běžně při zpracovávání větších obrázků, resp.
překročení nastaveného memory_limit
.
U mě je rozdíl v tom, že se nesnažím zpracovávat veliké obrázky,
ale spousty malých, proto mě napadlo, zda místo
ini_set('memory_limit','24M');
existuje nějaké řešení, resp.
postup, který by dokázal postupně po každém obrázku v cyklu třeba
promazávat tu paměť, aby se nezaplnila, popř. zda by pomohlo nějak, pokud
bych třeba po vykonání každého cyklu počkal několik sekund…
Nevím popravdě zcela jak přesně dojde k naplnění memory_limit, resp. co přesně se tam ukládá a jak se rozhoduje o tom, co se kdy smaže (po ukončení scriptu?). Jinak předpokládám, že to využívá RAM a popř. SWAP na disku, pokud je… Opravte mě prosím, pokud se mýlím…
Vím, že třeba David používá naprosto brilantně optimalizovaný loadSQL u dibi, který údajně má načítat soubor postupně, čímž se vyvaruje právě takovýmto chybám. Jak tedy lze něco takového realizovat v mém případě?
- maarlin
- Člen | 207
srigi napsal(a):
Kazdy obrazok ktory uz neni treba, je treba manualne uvolnit z pamati
$img_handle = imagecreatefrompng("blablabla.png"); ... ... imagedestroy($img_handle);
Zkoušel jsem, prakticky nepomáhá… zkoušel jsem i unsety všech nepotřebných proměnných, které se plní v cyklu… allocated memory beze změny…
Obávám se, že jsem tak trochu narazil na podobný problém…
http://latrine.dgx.cz/…memory-leaks