Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] przekroczono limit pamięci
sweter
post 26.09.2009, 20:22:36
Post #1





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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?



--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
mydoom.h
post 26.09.2009, 20:27:07
Post #2





Grupa: Zarejestrowani
Postów: 125
Pomógł: 13
Dołączył: 7.07.2009
Skąd: Warsaw

Ostrzeżenie: (0%)
-----


Serwer na home nie musi akceptować ini_set.


--------------------
Tani hosting - GlowaNET.pl | Hosting na Litespeed | PHP 5.2 | MySQL 5.1
Pakiety już od 22zł rocznie!
Hosting SEO Domeny
Go to the top of the page
+Quote Post
sweter
post 26.09.2009, 20:33:04
Post #3





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Czyli co mam zrobić?
Zmodyfikować plik php.ini?

Ten post edytował sweter 26.09.2009, 20:37:58


--------------------
Go to the top of the page
+Quote Post
mls
post 27.09.2009, 00:30:08
Post #4





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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).


--------------------
Go to the top of the page
+Quote Post
jarrod
post 27.09.2009, 01:51:07
Post #5





Grupa: Zarejestrowani
Postów: 312
Pomógł: 9
Dołączył: 14.10.2006
Skąd: warszawa

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
vokiel
post 27.09.2009, 08:33:12
Post #6





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
sweter
post 27.09.2009, 09:59:56
Post #7





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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?


--------------------
Go to the top of the page
+Quote Post
vokiel
post 27.09.2009, 10:18:00
Post #8





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
Wiktor P.
post 27.09.2009, 10:31:43
Post #9





Grupa: Zarejestrowani
Postów: 80
Pomógł: 9
Dołączył: 14.09.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 22.06.2025 - 07:34