Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Out of memory
Forum PHP.pl > Forum > Przedszkole
marek12

na kompie ma 16 gb pamięci, w momencie gdy jest wykorzystane okolo 6 gb
pokazuje sie taki komunikat
Kod
Fatal error: Out of memory (allocated 1774452736) (tried to allocate 24 bytes)


memory_get_usage zwraca wartosc 478.25 mb

memory_limit mam ustawione na -1, czyli powinno byc bez limitu
wszystko stoi na localu xampp

czy jest jakiś sposób aby skrypt był wstanie wykorzystać większą ilość pamięci?
com
napisać skrypt tak żeby nie było wycieku pamieć?
lukaskolista
Nie spotkałem się z koniecznością alokacji 6GB, nawet 1GB mi się nie zdarzyło, a piszę na prawdę spore kombajny. Pokaż kod, postaramy się pomóc.
marek12
mam skrypt ktory cos przelicza w pamieci i zapisuje do tablicy jakies dane, skrypt nie jest jakis skomplikowany
klopot jest w tym ze tych danych jest duzo

problem jest chyba w tym ograniczeniu
http://answers.microsoft.com/en-us/windows...0c-db19a325327d

chodzi o to ze proces 32 bitowy nie jest wstanie więcej alokować pamieci
czy jest jakas alternatywa 64 bitowa do xamppa pod windows?
com
to jest mowa o systemie a nie procesie 32 bit wink.gif jak masz 32 bit os to nie widzi Ci tego ramu itak, ale zakładam ze widzi wiec to nie to, po prostu masz wyciek i on zje każdy ram jaki masz smile.gif
marek12
mam windows 7 64 bitowy + xampp 32 bitowy (bo nie ma 64 bitowego)
powiedz mi o co chodzi z tym wyciekiem, bo nie rozumiem co masz na mysli
Dejmien_85
Cytat(marek12 @ 28.01.2016, 21:37:17 ) *
mam skrypt ktory cos przelicza w pamieci i zapisuje do tablicy jakies dane, skrypt nie jest jakis skomplikowany
klopot jest w tym ze tych danych jest duzo


Kolego, ile jest tych danych? Podaj rozmiar danych (to pewnie jakiś plik, może w formacie typu xml?).

Aby skrypt Ci "zeżarł" 6 GB RAMU, to musiałbyś napchać tam naprawdę w cholerę danych. Podejrzewam, że jest tak jak napisał kolega wyżej - masz tak zwanego"memory leaka", tj. wyciek pamięci.

Chodzi o to, że pewnie gdzieś zrobiłeś sobie pętlę, która - przez nieopatrzność - wykonuję się nieskończenie i zapycha Ci pamięć. Takie rzeczy potrafią się wydarzyć, gdy operuje się na sporej liczbie danych w tablicach i iteruje przez różnego rodzaju pętle.

Szukaj więc zdradzieckiej pętli. Gdzieś się coś musiało "pokaszanić".
marek12
to jeszcze raz inaczej to napisze
skrypt nie zjada mi 6 gb ramu

mam na kompie 16 gb, w momencie gdy system windows zjadal 6 gb ramu to przerywalo mi dzialanie sktyptu
ale to nie w tym problem

problem jest to ze proces httpd *32 w momencie gdy dochodzi do wielkosci okolo 2 gb ramu, to moj skrypt zwraca komunikt ze jest problem z alokacja pamieci
i tu jest problem taki ze procesy 32 bitowe nie potrafia alokowac wiecej pamieci (tzn troche wiecej byc moze potrafia ale to zalezy od kompa)

jesli chodzi o ilosc danych to nie wiem czy to duzo czy malo, ale tabelki sql ktore pobieram do tablic waza okolo 800 mb, dodatkowo na tablicach pozniej są rozne działania w wyniku czego powstają jeszcze inne tablice bardziej rozbudowane

memory leaka raczej nie mam bo gdy wezwe mniejszy zakres danych z sql to wszystko poprawnie sie liczy

pytanie jest takie czy dobrym pomyslem bedzie zrzucanie co iles wykonan petli tych danych do pliku a nastepnie usuniecie ich z tablicy i tak ten zabieg kilka razy powtarzac az sie wykona calosc, czy to bedzie proces szybszy niz mialbym do tego wykorzystac sql czy niekoniecznie
com
no liczy, bo dla małych danych zżera Ci ram ale w zakresie, który mieści się w możliwościach jakie serwer daje. Już Ci kolega wytłumaczył o co chodzi, bez kodu mozna gdybać, ale skoro coś potrzebuje coraz więcej ramu to znaczy, że jest coś nie tak, w php łatwo o wyciek danych, tak samo jak w językach kompilowanych.
kayman
gdzieś masz zamiast $ziemna $$zmienna, czasami się zdarza takie przy jakimś kopiuj/wklej smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.