Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] przekroczono limit pamięci
Forum PHP.pl > Forum > Przedszkole
sweter
Wstawiłem stronkę na serwer, ale jeden ze skryptów wywala i taki błąd:

Cytat
Fatal error: Out of memory (allocated 77070336) (tried to allocate 40 bytes) 


mimo, że mam ustawione 

  1.  
  2. ini_set('memory_limit', '150M');
  3.  


Dodam, że ten skrypt kopiuje pewien plik, rozpakowuje go i parsuje go (jest to plik XML).

Na localhost'cie, wszystko jest w porządku, ale gdy wstawiłem stronę na serwer home.pl jest właśnie taki błąd sad.gif

Jak naprawić ten błąd?

mydoom.h
Serwer na home nie musi akceptować ini_set.
sweter
Czyli co mam zrobić?
Zmodyfikować plik php.ini?
mls
Cytat(sweter @ 26.09.2009, 21:33:04 ) *
Czyli co mam zrobić?
Zmodyfikować plik php.ini?


Zmienić hosting lub parsować plik tak, aby nie pchać go całego do pamięci (czyli w żadnym wypadku simplexml).
jarrod
w katalogu głównym serwera umieszczasz plik php.ini i tam wpisujesz odpowiednie dyrektywy.
Aczkolwiek z tego co wiem home.pl ogranicza ilość pamięci do 64 MB i można co najwyżej zmniejszyć albo zmienić serwer na dedykowany...
vokiel
Możliwości ustawienia limitu pamięci jest 3:
php.ini:
  1. ;; set new memory limit
  2. memory_limit = 64M

.htaccess:
  1. # set new memory limit
  2. php_value memory_limit 64M

lub w php:
  1. // set new memory limit
  2. ini_set('memory_limit','64M');


home.pl ma ustawiony limit 128M. Ma zablokowaną możliwość zmiany limitu przez użytkownika.
sweter
Cytat
home.pl ma ustawiony limit 128M. Ma zablokowaną możliwość zmiany limitu przez użytkownika.

Cytat
Aczkolwiek z tego co wiem home.pl ogranicza ilość pamięci do 64 MB

Wczoraj wysłałem zapytanie do home.pl i powiedzieli mi, że limit jest ustawiony na 80 MB i jest już ustalony na stałe.

Cytat
parsować plik tak, aby nie pchać go całego do pamięci (czyli w żadnym wypadku simplexml).

Do parsowania używam XMLReader. On chyba nie zapcha mi całego limitu pamięci, mimo że plik XML waży ponad 120 MB?
Słyszałem, że XMLReader wczytuje tylko te kawałki pliku, które są mu potrzebne. Czy to prawda?
Może jest jakiś inny, lepszy parser?

Poczytałem też trochę w sieci i dowiedziałem się, że wykonując kilka tysięcy zapytań do MySQL w jednym skrypcie można tym samym "dobić" bazę danych.
Ale takie "dobijanie" jest tylko wtedy, gdy MySQL wyśle komunikat
Cytat
MySQL has gone away

(czy coś takiego).
Czy sytuacja poprawiła by się, gdybym sklepił np. 100 zapytań w jedno?
vokiel
Cytat(sweter @ 27.09.2009, 10:59:56 ) *
Wczoraj wysłałem zapytanie do home.pl i powiedzieli mi, że limit jest ustawiony na 80 MB i jest już ustalony na stałe.


Hmm, może to zależy od rodzaju hostingu, bo: phpinfo.php5
Cytat
memory_limit 128M 128M


Sprawdzałem teraz na Business Starter oraz Business Server i w obu mam 128M
Wiktor P.
Cytat(sweter @ 27.09.2009, 10:59:56 ) *
Poczytałem też trochę w sieci i dowiedziałem się, że wykonując kilka tysięcy zapytań do MySQL w jednym skrypcie można tym samym "dobić" bazę danych.


Nie wiem jak to jest z zapytaniami, ale jest coś takiego jak maksymalny limit połączeń do bazy.
Z tego co wiem to na Active 24 wynosi on 60, a na Info-Cal 150.
Przekroczony limit (dotyczy ilości połączeń wykonywanych na raz, w jednej chwili) spowoduje zatrzymanie strony.
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.