![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 189 Pomógł: 13 Dołączył: 20.09.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
problem polega na tym, że przy próbie uruchomienia skryptu dostaję błąd:
Cytat Allowed memory size of 134217728 bytes exhausted (tried to allocate 43 bytes) w projekcie stworzyłem 4 singletony. dwa z nich podczas tworzenia ustalają sobie jakieś parametry (ale to chyba nie jest ważne). dalej - w projekcie posiadam klasę "_controller". inne klasy mogą z niej dziedziczyć. gdy próbuję odpalić kod, który zawiera tworzenie obiektu $a (klasy "lol" dziedziczącej po "_controller"), dostaję wyżej wymieniony błąd. poniżej klasa controller:
a tu jeden z singletonów:
czy ktoś wie, w czym może być problem? edit: dodam, że po wywaleniu kodu odpowiedzialnego za przypisanie zawartości w konstruktorze klasy "_controller" wszystko idzie normalnie. kod "getInstance" jest prawie taki sam w każdym singletonie (nie licząc nazwy klasy przy wywołaniu "new"). Ten post edytował czychacz 28.04.2012, 15:01:04 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 13 Dołączył: 21.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj pokombinować z tymi ustawieniami (dodatkowo możesz wklepać zaklęcie, o ile siedzisz na unixie: ulimit -a):
- na początku sprawdziłbym coś takiego
- potem wywaliłbym linijkę z $this->db (może jakiś ORM wyżera Ci pamieć) - potem przeszukałbym kod, głównie pętle foreach, możę tam jest jakis memory leak - potem popróbowałbym zwiększyć limit pamięci z poziomu php Generalnie baw się i próbuj, możesz nawet zapiąc xdebuga, albowiem jest to odpowiednia do tego sytuacja ![]() |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 189 Pomógł: 13 Dołączył: 20.09.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
problem jest chyba gdzieś indziej. zacząłem pisać nowy projekt i wszystkie klasy są prawie puste. np. klasy _db i _view mają tylko zmienną przechowującą instancję i metody pobierające tą instancję.
próba zwiększenia limitu pamięci nawet do 192 MB kończy się tym samym. ten kod nie pozwala także wyświetlić użycia pamięci. w całym kodzie są tylko 2 pętle (foreach, konstruktor klasy _config, przetwarza on plik ini). temat do zamknięcia. poradziłem sobie - okazało się, że w konstruktorze klasy _controller wywoływałem pobieranie instancji, która jeszcze nie została utworzona a sam obiekt klasy _controller był tworzony w konstruktorze klasy _engine. fakt - był to rodzaj pętli ![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 664 Pomógł: 169 Dołączył: 8.01.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Taki offtopic.
A dlaczego chcesz tutaj koniecznie mieć singletony? Rozumiem, że każda dziedzicząca klasa ma posiadać takie same (a dokładniej - te same) atrybuty. Ja bym zrobił coś takiego:
Atrybuty są statyczne, czyli dotyczą każdej klasy rozszerzającej rodzica. init() jest wywoływany tylko raz, gdy atrybuty jeszcze nie zostały zainicjalizowane. Dodatkowo unikasz tworzenia singletonów, co jest z pewnością na plus:) Ten post edytował bastard13 30.04.2012, 10:14:40 -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 05:01 |