ugrás a tartalomhoz

Rendszeres PHP memória hiba!

Topi · 2007. Aug. 3. (P), 18.43
Sziasztok, van egy nagyon égető probléma. Egy olyan két hete jelentkezett először, hogy a PHP oldalak helyett az alábbi üzenet jön be:
PHP Fatal error: out of dynamic memory in yy_create_buffer() in Unknown on line 0

Egyszerűen nem tudok rájönni, és mostmár egyre sűrűbben jön elő. Script memóriája a php-nak 16M-ra van állítva!

Nem tudtok véletlen valami gyógymódot rá?
Ezer köszönet. Üdv. Topi.
 
1

Pedig memőria a kevés

tolmi · 2007. Aug. 4. (Szo), 09.35
[1]
[2]
[3]

Javaslom hogy kezdd el megemelni a PHP memlimitet. 16Mb édeskevés amúgyis. Ha meg gyorsan ki akarod próbálni hogy működik-e ez a trükk, akkor egyből lőhetsz neki 128M/per instace(mivel ez csak limit, nem pedig minimum foglalás). Az mondjuk hogy eddig ez a hiba nem jelentkezett, jót nem sejtet. Ha megoldja a problémádat a limit növelése, akkor ki kellene derítened, hogy miért kell a scriptednek most több memória, mint régen.
2

Elmúlt, visszajött...

Topi · 2007. Szep. 1. (Szo), 08.55
Egy ideig minden oké volt... 128M-s memória limittel is amúgy jelentkezik ugyan ez... Amiket belineltél már mind végigolvastam, de azon kívül hogy megtárgyalják hogy a phpnuke rendszer okozza, de nem tudják mitől van, semmivel nem lettem okosabb...
PHPNuke rendszereket szívemből gyűlölöm, nálam nincs is, tehát az biztos nem okoz semmit :D
3

rossz a script ;)

TeeCee · 2007. Szep. 1. (Szo), 09.41
Hali!

Nos, ha annak elelnére, hogy elolvastad a cikkeket még mindig elfogy a memória ;) próbáld meg megnézni, melyik phpscript futása alatt van. Ha csak egynél, de annál bizonyos feltételek között mindig, garantáltan programozásbeli hülyeség/elírás. Használd a memory_get_usage() függvényt az aktuális memóriahasználat ellenőrzésére (WIN alatt 'természetesen' ilyen nincsen, de kerülő megoldások vannak, lásd a manualt...
Néhány variáció, hogy lehet túllépni a memóriát:
- rekurzív algoritmus túl mély és mindig szép mennyiségű adatot adsz át neki..
- végtelen ciklussal gyártasz egyre nagyobb mennyiségű adatot és mielőtt végtelennek titulálná, már el is fogy a memó
- egy fájlt (CSV, vagy más 'adatbázisnak' használt) a file() függvénnyel olvasol be (ekkor minden ugye memóriába kerül) és ezen dolgozol, esetleg még másolatot is létrehozol, és/vagy regexpezel rajta eléggé bonyolult kifejezésekkel

Esetleg még az jöhet szóba, hogy a szerveren nincs elég szabad memória? - bár ekkor default swappolni kéne és lassulnia ;)

Remélem, tudtam segíteni...