Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Przeciążenie serwera, pętla while
Forum PHP.pl > Forum > Przedszkole
Tomplus
Witam,

Tworzę nowy temat, bo problem jest inny niż z powiązanymi rozwiązaniami z tematu:
http://forum.php.pl/index.php?showtopic=203921&hl=
gdzie YaQzi oraz alegorn pomogli swoimi zapytaniami związanymi z bazą.

Wykonanie zapytania w PHPMyAdmin dają wynik dokładnie taki jaki był zamierzony, wynik pojawia się szybko, za to w skrypcie PHP już nie.

jedno z zapytań działających które użyłem
  1. SELECT p.* FROM produkty t JOIN produkty p USING(nazwa, model,typ) WHERE t.id='6156'



DZIAJĄCE:
  1. $zap = "SELECT p.* FROM produkty t JOIN produkty p USING(nazwa, model,typ) WHERE t.id='6156'";
  2. $p1=mysql_fetch_array(zapytaj($zap));
  3. print_r($p1); // jeden rekord - logiczne

Wynikiem jest tylko jeden rekord, ale to logiczne.

NIE DZIAŁAJĄCE:

  1. $zap = "SELECT p.* FROM produkty t JOIN produkty p USING(nazwa, model,typ) WHERE t.id='6156'";
  2. while ($p1=mysql_fetch_array(mysql_query($zap)))
  3. {
  4. print_r($p1); //Internal Server Error : Wewnętrzny błąd serwera
  5. }


metoda dwóch zapytań

  1. $zap = "SELECT typ,model,nazwa FROM produkty WHERE id='6156'";
  2. $zap = "SELECT * FROM produkty WHERE typ={$p[0]} AND model={$p[1]} AND nazwa={$p[2]}";
  3. while ($p1=mysql_fetch_array(mysql_query($zap)))
  4. {
  5. print_r($p1); //Internal Server Error : Wewnętrzny błąd serwera
  6. }


Jeszcze kilka lat temu metoda druga była najczęściej używane metoda podczas pisania zapytań, co jak co, ale zawsze działały, czasem wolniej, ale działalo.

Teraz pętla while jak w jednym zapytaniu, jak w przypadku 2 zapytań powoduje wewnętrzny problem serwera:


Teraz trochę danych technicznych:
- korzystam serwerów NAZWA.pl
- w bazie istnieje 1200 rekordów produktow (auto_increment dla ID, indexowanie dla nazwa,typ i model)
- dla ID podanego w przykładzie powinny wyświetlić się 3 ID produktów.
nospor
Cytat
Jeszcze kilka lat temu metoda druga była najczęściej używane metoda podczas pisania zapytań, co jak co, ale zawsze działały, czasem wolniej, ale działalo.
Tak, tak, jak również kilka lat temu gruszki rosły na wierzbie wink.gif

NIe:
  1. while ($p1=mysql_fetch_array(mysql_query($zap)))
  2.  
  3. {
  4.  
  5. print_r($p1); //Internal Server Error : Wewnętrzny błąd serwera
  6.  
  7. }

a:
  1. $res = mysql_query($zap);
  2. while ($p1=mysql_fetch_array($res))
  3.  
  4. {
  5.  
  6. print_r($p1); //Internal Server Error : Wewnętrzny błąd serwera
  7.  
  8. }
Odrobina podstawowej wiedzy co się dzieje w WHILE oraz co robi mysql_query by się przydało.
Tomplus
Cytat(nospor @ 23.08.2012, 12:10:47 ) *
Tak, tak, jak również kilka lat temu gruszki rosły na wierzbie wink.gif

oczywiście mówię o sobie, a nie innych smile.gif


Cytat(nospor @ 23.08.2012, 12:10:47 ) *
  1. $res = mysql_query($zap);
  2. while ($p1=mysql_fetch_array($res))
  3. {
  4. print_r($p1); //Internal Server Error : Wewnętrzny błąd serwera
  5. }

Odrobina podstawowej wiedzy co się dzieje w WHILE oraz co robi mysql_query by się przydało.


Mój błąd!

Zachciało mi się skrócić kod o jedną linię, a zastosowanie tego tak jak napisałem powyżej to wczytywanie w nieskończoność tego samego zapytania co powodowało przeciążenie i błąd wewnętrzny serwera. Dlatego bez pętli zapytanie działa.

DZIĘKUJE!
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.