Autor Zpráva
honza
Profil
Zdravím všechny,
v mé aplikaci se v jednom skriptu objevuje problém Allowed memory size, přestože je tato hodnota nastavena na 128M. Většinou tuto chybu způsobí fce str_replace a str_ireplace. Je za tím větší objem dat, který načítám ze souboru (třeba i 15MB). Už jsem se to snažil i rozdělit, aby nahrazení bylo na kratším řetezci, přesto se chyba opět objevila. Následný příklad je drobně upravený originál.
22: $s = iconv("UTF-8","WINDOWS-1250",$s);
23: $code = substr($s,0,strpos($s,"\n"));
24: $code = str_ireplace('(text)','dobry den',$code);
25: $s = $code . substr($s,strpos($s,"\n"));

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 14717616 bytes) in /home/www/myscript.php on line 25

Podobná chyba se mi objevovala i v dalším případě. Tady jsem funkci str_replace nahradil strtr a už je to v pořádku (bohužel je strtr dle mých měření o něco pomalejší než str_replace). Přesto mi nejde do hlavy, proč se chyba objevuje.
Mnohokrát děkuji za pomoc a vysvětlení
Honza
WanTo
Profil
honza
Na Rootu právě čtu, že na 64-bitových procesorech funguje v PHP 5 špatně memory_limit (podrobnosti neznám). Nemůže to být náhodou tvůj případ? Jestli se tě to týká, zkus upgradovat na verzi 5.1.6, kde by měla být chyba opravena.
Toto téma je uzamčeno. Odpověď nelze zaslat.