Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: "Fatal error: Allowed memory size of" na localhoście
Forum PHP.pl > Forum > PHP
franz87
Witam,
Mam program, który filtuje pliki tekstowe w poszukiwaniu pewnych danych.
Dane te zapisuje do tablicy.
Jednak zapisuje je do tablicy jakby strumieniowo. 1 plik -> 1 tablica -> wyświetlenie -> zapisanie do pliku.
Funkcja ta jest wywoływana w foreach tyle razy ile jest plików w folderze.

Przeszukiwany plik ma ok 150KB, jest on przekazywany do funkcji, która szuka w niej kolejno pewnego ciągu (stripos) i zapisuje go do tablicy.
Gdy przeszuka cały plik zwraca tablicę wyników (znalezionych ciągów).
Przy próbie przeszukania powyżej 73 plików, wypisuje 11 i wyskakuje błąd:

  1. Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 24 bytes) in C:\xampp\htdocs\program\f_find_between.php on line 18

Wskazuje na linijkę 18, gdzie jest stripos()

W php.ini w xamppie mogę zmienić limit maxymalnie na 128MB - tak pisze w ów pliku. Jednak gdy zmieniłem na 2048M, po wywołaniu phpinfo() było widać właśnie taki limit, a mimo to nie wyświetlało wszystkich plików. Błąd zamienił się na :

  1. Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\ebayAPI\f_find_between_history.php on line 18


Co może być nie tak?
cudny
Daj coś takiego w php.ini

max_execution_time = 5000
max_input_time = 5000
memory_limit = 1000M

Do tego sprawdź, na którym pliku Ci się wywala - gwarantuję, że będzie to duży plik
franz87
Cytat(cudny @ 18.02.2013, 22:38:18 ) *
Do tego sprawdź, na którym pliku Ci się wywala - gwarantuję, że będzie to duży plik


Wywala na pliku 21KB, tyle co wszystkie inne.
  1. Daj coś takiego w php.ini
  2. max_execution_time = 5000
  3. max_input_time = 5000
  4. memory_limit = 1000M

To mam dać pod limit-memory czy obojętnie gdzie?
cudny
Znajdź w php.ini i zamień, jak nie istnieje to utwórz gdziekolwiek.

Jeśli wywala Ci na pliku 21 KB to weź jeszcze wywal ten plik tymczasowo i sprawdź czy tylko z tym plikiem jest problem
franz87
Na 73 pliki wywalenie 2óch pomogło.
71 pozostałych wyświetliło się prawidłowo.
Wartości podane przez Ciebie podmieniłem, serwer zresetowałem.

Próbowałem podmienić nazwę felernych plików, ale nie pomogło. Skrypt wywala się na próbie ich przetworzenia.
Dodam, że zawartość tych plików nie odbiega niczym szczególnym od pozostalych.
Czy wiadomo co to jeszcze może być?
cudny
Jak nie są to poufne pliki to wrzuć je gdzieś gdzie można je pobrać.
Chętnie sam sprawdzę, co takiego wyjątkowego jest w texcie, że Ci go nie czyta smile.gif
franz87
Problem rozwiązany (mam nadzieje biggrin.gif)
Okazało się, że w tych dwóch plikach, ciąg, którego szukam był lekko zmodyfikowany.
Szukałem wg. słowa NEZ a u tych dwóch delikwentów było NESZ.
Dzięki za wszystkie sugestie ! Pozdrawiam

cudny
No, ale zdajesz sobie sprawę, że w takim wypadku masz wadliwy skrypt, który w niektórych wypadkach wywali Ci całą aplikację ?
Pewnie wpadało w rekurencje i nie kończyło skryptu, lepiej to wyeliminuj
franz87
Tak, ale prawdopodobnie więcej takich przygód nie będzie.
Po prostu w czasie zimowym przy godzinie było napisane "MEZ" -----> MiddleEurope, a w zimie "MESZ" -------> MiddleEuropeSummer.
Skrypt robię tylko dla siebie, więc jeżeli znowu się kiedyś posypie, to nie będzie ciężkich konsekwencji...
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.