Clicky

Skocz do zawartości


Zdjęcie
- - - - -

[K3.2] Allowed memory

7 odpowiedzi w tym temacie
kohana 3.2 allowed memory

  • Zaloguj się, aby dodać odpowiedź

#1 kevin

kevin

    Młodszy Mastah

  • Użytkownik
  • PipPip
  • 207 postów

Napisano 19 grudzień 2013 - 09:36

Witam.

 

Po przerzuceniu strony www na inny hosting (z wyższą wersją php 5.5.6) występują problemy z przekroczoną ilością pamięci na serwerze. Komunikat jest standardowy, tj:

Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 72 bytes) in /PLIK/

Ogólnie w tej chwili podkręciłem limit pamięci to 512M (choć nawet jak dam więcej to błąd nie odpuszcza).

Znalazłem w sieci następujący błąd: http://dev.kohanafra...org/issues/4316

 

Zmodyfikowałęm odpowiednio plik "render.php" z modulu "database" dodając ledwie jedną linijkę:
if ($group === 'database')
return FALSE; 
 
I wówczas błąd z pamięcią już nie występował w pliku mysql.php - tylko teraz przerzucił się na system/classes/kohana/core.php on line 956
 
I tak w kółko - ktoś miał podobny problem?


#2 sbl

sbl

    Początkujący

  • Webmastahy
  • Pip
  • 55 postów
  • Skąd:Wrocław

Napisano 19 grudzień 2013 - 13:57

Musisz mieć gdzieś wyciek pamięci, miałem podobny problem przy generowaniu dużego drzewa kategorii.

Źle zoptymalizowany kod = zjedzona pamięć.



#3 Riu

Riu

    Senior Mastah

  • Webmastahy
  • PipPipPip
  • 949 postów

Napisano 19 grudzień 2013 - 14:43

A może po prostu zapętliło się coś bo niewłaściwy sterownik masz ustawiony w database? W php 5.5 nie masz już obsługi mysql i możesz wyłącznie przez pdo się łączyć (ewentualnie sterownik do mysqli gdzieś tam był dodany na githubie - trzeba poszukać). To co zmodyfikowałeś jest bez sensu bo dotyczy wczytywania konfiguracji (merge tablic z grupy plików o nazwie database).


Debian/Ubuntu + Kohana/Hanariu/Phalcon + MongoDB/MySQL + HTML5/CSS3 + Node.js/jQuery + CEO Sport Magazyn/CEO Hanariu


#4 kevin

kevin

    Młodszy Mastah

  • Użytkownik
  • PipPip
  • 207 postów

Napisano 19 grudzień 2013 - 19:20

Nie ma możliwości, aby któryś z modułów był nieoptymalnie napisany. Na poprzednim hostingu świetnie wszystko działało.
Jeśli chodzi o driver dla bazy danych zmieniłem na "pdo", ale właściwie bez zmian, wciąż komunikat:
 
Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 77 bytes) in /modules/database/classes/kohana/database/pdo.php on line 241


#5 phpion

phpion

    Senior Mastah

  • Użytkownik
  • PipPipPip
  • 774 postów
  • Skąd:Sosnowiec, Dąbrowa Górnicza

Napisano 20 grudzień 2013 - 14:49

Wygląda na to, że problem leży w metodzie connect(). Debuguj linia po linii dając np:

die('dupa');

i zobacz w którym miejscu zacznie Ci przekraczać pamięć.

 

// Edit.

W sumie zależy z jakiej wersji Kohany korzystasz. Sprawdziłem klasę dla 3.3, ale po małych literach w ścieżce podanej przez Ciebie może to być 3.2. W niej okolice linii 241 to:

	public function list_columns($table, $like = NULL, $add_prefix = TRUE)
	{
		throw new Kohana_Exception('Database method :method is not supported by :class',
			array(':method' => __FUNCTION__, ':class' => __CLASS__));
	}

Korzystasz w projekcie z ORM'a? On korzysta z tej metody. Może rzucanie i przechwytywanie wyjątków Ci się zapętla?


Notifero - Technologie Informatyczne | Warsztat: Kohana 3.x/2.x + PostgreSQL/MySQL | Programista Kohana

#6 kevin

kevin

    Młodszy Mastah

  • Użytkownik
  • PipPip
  • 207 postów

Napisano 21 grudzień 2013 - 19:12

Jak w configu "database.php" dla domyślnego połączenia ustawie sterownik "mysql" to samo połączenie (mysql_connect()) wpada w pętle - najpierw próbuje
połączyć się z domyślnymi danymi ("default") a później pobiera wartości z "alternative" - i tak w kółko - dlaczego się zapętla?
 
Ponieważ sam MySQL przy mojej wersji PHP zwraca błąd:
ErrorException [ 8192 ]: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead ~ MODPATH/database/classes/kohana/database/mysql.php [ 50 ]
 
Jako, że mam ograniczony wybór jeśli chodzi o sterownik db dla Kohany 3.2 - więc stosuje "pdo" - tak jak @phpion napisał wyżej (fragment w code) 
funkcja list_columns rzuca od razu wyjątkiem - oczywiście korzystam z ORM - więc najpierw pobierana jest struktura tabel, ale ostatecznie rzuca ten wyjątek (?)
 
co teraz zrobie? poproszę hosting, aby zrobili downgrade wersji PHP, ponieważ obecnie nie mam więcej pomysłów :-/


#7 Zepco

Zepco

    Senior Mastah

  • Moderator
  • 1583 postów
  • Skąd:Kielce

Napisano 21 grudzień 2013 - 21:15

A może hosting pozwala na downgrade za pomocą konfiguracji np. w .htaccess


OŚWIADCZENIE: Ja, niżej podpisany, świadomy wszystkich konsekwencji tego posta postanawiam go dopuścić do użytku publicznego, albowiem bo gdyż aczkolwiek uważam, że nie wyrządzi on (znaczy: post) krzywdy nikomu innemu niźli mnie samemu (czyli autorowi posta).
-- Zepco --


#8 phpion

phpion

    Senior Mastah

  • Użytkownik
  • PipPipPip
  • 774 postów
  • Skąd:Sosnowiec, Dąbrowa Górnicza

Napisano 23 grudzień 2013 - 08:28

Jeżeli problemem faktycznie jest list_columns() to możesz zaadaptować kod ze sterownika dla mysql_*. Skoro u siebie i tak korzystasz z MySQL to abstrakcja PDO w tym miejscu będzie zbędna. Metoda rzuca domyślnie wyjątkiem zapewne z racji abstracji: z PDO możesz korzystać dla różnych baz więc autorzy modułu database nie zaimplementowali tej funkcji.


Notifero - Technologie Informatyczne | Warsztat: Kohana 3.x/2.x + PostgreSQL/MySQL | Programista Kohana





Również z jednym lub większą ilością słów kluczowych: kohana 3.2, allowed memory

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych