![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 2 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Napisałem sobie skrypt. Łączy się z bazą danych, odczytuje i wypisuje dane z 4 tabel (dosłownie 10 rekordów), wypisuje 4 formularze - po jednym do modyfikacji danych w każdej tabeli. Na lokalu <wamp 2.1 PHP 5.3.3 MySQL 5.5.8 i Apache 2.2.17> wszystko pięknie śmiga.
Po krótkich testach chciałem zobaczyć jak będzie to wyglądało w internecie i wrzuciłem na swój serwer. Wypełniłem trochę danymi i się bawiłem i przez około 20 minut wszystko działało ładnie, po czym po którymś przesłaniu danych w formularzu pusta strona (biała). I tyle mi się wyświetla. Jak już łaskawie ukaże mi się formularz logowania to po zalogowaniu się dalej pusto. Treść dziennika logów: [Tue Jan 10 16:05:22 2012] [warn] [client 31.175.91.238] mod_fcgid: stderr: PHP Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 66846721 bytes) in /ścieżka_do_folderu/plik_z_funkcjami_dołączonymi_do_skryptu on line 69 Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 66846721 bytes) in /ścieżka_do_folderu/plik_z_funkcjami_dołączonymi_do_skryptu on line 69 Skrypt wygląda tak: index.php
funkcje.php
Macie jakieś pomysły/sugestie jak rozwiązać ten problem? za każdym razem gdy prześlę formularz to strona się przeładowuje i łączy się ponownie z bazą danych tzn tak jak na schemacie: -łączy z bazą -wyświetla formularz -zamyka polaczenie i tak w kółko za każdym przesłaniem formularza. Czy to może szkodzić mojemu skryptowi? Tzn czy jest on przez to duży, zajmuje dużo zasobów i czy można by to zrobić lepiej? (raz łączyć z bazą danych i przeładowywać stronę bez tracenia tego połączenia)? Czy może to w niczym nie przeszkadza jak sobie dwa razy dziennie połączę się z bazą danych po 5 razy w ramach tego skryptu? //EDIT: poprawione, wcześniej nie miałem dostępu do źródeł skryptu dlatego tak to napisałem. Ten post edytował Kulfon 10.01.2012, 18:40:07 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Pokaż lepiej dokładnie jak wygląda twój skrypt a nie walisz pseudokod, z którego nic nie wynika.
1) Nie edytuj posta jako odpowiedź na mojego posta, bo niby skad mam wiedzieć, że edytowałes? Pisz normalnie jak człowiek kolejnego posta, wówczas wiadomo, że jest nowa rzecz w temacie 2) Wcześniej pokazałeś kod, na którym wywałał się skrypt. Teraz tego kodu nie widzę. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 2 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Już poprawiłem
Plik funkcje.php - komentarzem zaznaczyłem gdzie jest błąd Linia 52 Ten post edytował Kulfon 10.01.2012, 17:16:53 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
I jeszcze się dziwisz, że pożera pamięć w nieskończoność? -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 2 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Nie wydziwiaj, tylko zacznij od zapisania tego po ludzku, bo na 90% jest któraś z pętli nieskończona.
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 2 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Zaraz to wszystko sprawdzę jeszcze raz
![]() Swoją drogą to do pewnego momentu działało a ja nic nie zmieniałem w kodzie wtedy więc czemu nagle zaczęło mu coś nie pasować? Gdyby pętla była nieskończona to w ogóle by nie ruszyło tylko od razu wypluło ten błąd (przynajmniej tak mi się wydaje). Ten post edytował Kulfon 10.01.2012, 20:46:53 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Użyj debuggera i uruchom krok po kroku cały skrypt.
Po to są narzędzia, żeby z nich korzystać. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 2 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Hmm póki co xDebug'a nie udało mi się odpalić u siebie...
Mam wamp'a 2.1 phpinfo(); wyrzuca że xDebug jest zainstalowany <http://wklej.org/id/666164/> html_errors = On display_errors = 1 tak mam ustawione w php.ini coś jeszcze powinienem skonfigurować <zrobić inaczej?> Zauważyłem jeszcze jedną rzecz: w pliku index.php wywołuję 2 razy funkcję
lokalnie działa to w porządku na serwerze natomiast wywala błąd na serwerze wszystko działa jeżeli zakomentuję drugie wywołanie funkcji
wtedy także nie ma błędu o przepełnionej pamięci EDIT:// Wyczyściłem bazę danych na serwerze. Wysłałem pliki jeszcze raz i wszystko działa jak należy (jak przed błędem) Mimo tego, czy możecie mi powiedzieć co mogło być domniemana przyczyną takich błędów? Ten post edytował Kulfon 11.01.2012, 18:01:42 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
O to:
Zrozum wkoncu ze tu ci się zapetla. A zapetla się, bo $i zmniejszasz warunkowo w petli while, do której albo może nie wejsc w ogole, albo wejdzie za malo razy by zmniejszyc dostatecznie to $i Teraz ci działa, bo baze wyczyściłeś i pewnie wszystkie zależności warunkowe masz ok. A przestało ci działać, bo w pewnym momencie tak zmieniłeś dane w bazie, że zależności warunkowe zrobiły się złe i $i nie zostało dostatecznie zmniejszone by wyjść z pętli. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 2 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ok, dziękuję, wreszcie do mnie dotarła głupota jaką zrobiłem....
Pytanie tylko czy da się to zrealizować w inny sposób? Moglibyście mnie naprowadzić na jakieś lepsze rozwiązanie? 2 tabele, jedna przechowuje nazwy nagłówków druga trzyma nazwy pozycji wypisuję nagłówek i potem pozycje które odpowiadają temu nagłówkowi - to miała w założeniu realizować ta konstrukcja. Da się w takim razie zrobić to inaczej? |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat wypisuję nagłówek i potem pozycje które odpowiadają temu nagłówkowi - to miała w założeniu realizować ta konstrukcja. Jedną pętlą nawet ![]() Kod bufor nagłówka = d...a; iteruj po wyniku jeśli nagłówek_wyniku != bufor nagłówka rozpocznij nową grupę bufor nagłówka = nagłówek_wyniku I można tak w nieskończoność, bez liczenia czegokolwiek. [; -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 2 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
A jeszcze troszkę bardziej na php z pseudo kodu? ;p Chyba już rozumiem jak to ma iść i zaraz spróbuję to przepisać, ale mimo wszystko jakbyś mógł jeszcze mi to przybliżyć to byłbym wdzięczny. Napiszę za jakiś czas co mi z tego wyszło
![]() |
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
I tak praktycznie gotowca dostałeś.
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 2 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dobra, zobaczymy co mi z tego wyjdzie, a jakby co to napiszę jeszcze
![]() |
|
|
![]()
Post
#16
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Tutaj opisałem dokładnie Twój problem
http://nospor.pl/grupowanie-wynikow.html -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 2 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki wielkie za pomoc, skrypt działa
![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 22:26 |