![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 27.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Pierwszy raz spotakłem się z czyms takim. W skrypcie PHP w momencie próby zbudowania zmiennej tablicowej w pętli, wywala błąd o przydziale pamięci. Cytat Allowed memory size of 134217728 bytes exhausted (tried to allocate 71 bytes) in /var/www/html/index.php on line 33 Zresztą sami spójrzcie:
Jak widać w momencie wystapienia błedu skrypt próbuje dopisac do zmiennej tablicowej $ap (zawierającej aktualnie 4 rekordy) koloejne 15 rekordów. Nie sadze, żeby 19 rekordów przekraczało 134217728 bajtów (czyli 128 MB), zresztą po zmianie w php.ini Kod memory_limit = 128M na Kod memory_limit = 512M wyskakuje identyczny błąd (zmienia się tylko ilość dozwolonej pamięci zmienia się na 536870912).Włączenie obsługi długich tablic Kod register_long_arrays = On też nie pomaga - zresztą 19 rekordów to nie jest długa tablica.Jestem prawie pewien, ze to kwestia konfiguracji apach'a, ale nie mam pomysłu co konkretnie mogłoby to powodować. A może coś z uprawnieniami do katalogu/plików? Jesli ktos ma jakis pomysł to bardzo prosze pomoc / podpowieedź. Z góry dzięki. Pozdrawiam Ten post edytował DK.log 19.10.2010, 22:27:45 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
A skąd się zabrała tam tablica: $apartments i jakie przyjęła wartości?
-------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 304 Pomógł: 51 Dołączył: 4.02.2005 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi się, że w pętli modyfikujesz (zwiększasz) tablicę apartments, a to że za każdym razem wywoływany jest count($apartments) powoduje że pętla wykonuje się masakryczną liczbę razy do momentu aż pamięci brakuje. Wyciągnij liczenie elementów tablicy $apartments przed pętle i przypisz do zmiennej, którą wstawisz w miejsca, gdzie obecnie wywołujesz funkcję count.
-------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
I nie przechowujemy dużej liczby danych w pamięci, używamy plików lub bazy.
|
|
|
![]() ![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 27.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
A skąd się zabrała tam tablica: $apartments i jakie przyjęła wartości? Tablica $apartments miała być tablicą $ap - przepraszam za pomyłke. Już wyedytowałem pierwszy post. Wydaje mi się, że w pętli modyfikujesz (zwiększasz) tablicę apartments, a to że za każdym razem wywoływany jest count($apartments) powoduje że pętla wykonuje się masakryczną liczbę razy do momentu aż pamięci brakuje. Wyciągnij liczenie elementów tablicy $apartments przed pętle i przypisz do zmiennej, którą wstawisz w miejsca, gdzie obecnie wywołujesz funkcję count. -=Peter=- miałes rację. Wystarczyła prosta zmiana.
Dzięki. I nie przechowujemy dużej liczby danych w pamięci, używamy plików lub bazy. Pilsener, zgadzam sie z tobą. Zwróć jednak uwage, że z załozenia "moja" ilośc danych to miało byc 34 rekordy. Przez moją pomyłke w definicji petli for danych zrobiło się o wiele więcej. W kazdym razem dziękuje wszytskim za zainteresowanie tematem. Poniewaz problem został rozwiazany przez -=Peter=-'a, mozemy śmiało zamykac ten temat. Pozdrawiam. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 03:55 |