Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Czy skrypt jest uciążliwy dla serwera
licha
post
Post #1





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 7.12.2010

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


witam napisałem sobie skrypt i moje pytanie brzmi czy będzie mocno uciążliwy dla serwera jeśli będzie się wykonywał co godzinę ? Dla większej ilości użytkowników ?
  1. <?
  2.  
  3. require('conn.php');
  4.  
  5. $tymczasowa =mysql_query("SELECT akcja FROM user ");
  6. $ilosc = mysql_num_rows($tymczasowa);
  7. $i=1;
  8. while( $row = mysql_fetch_array( $tymczasowa )) {
  9. $tym =mysql_query("SELECT max_akcja FROM user WHERE id='$i'");
  10. $tym = mysql_fetch_array($tym, MYSQL_NUM);
  11. $max=$tym[0];
  12. $akcja=$row[0];
  13. $plus=$max/10;
  14. $plu=ceil($plus);
  15. $akcj=$akcja+$plu;
  16. echo"id $i <br>Akcja : $akcja <br>plus $plus<br>plu $plu<br>akcja2 $akcj<br>";
  17. if($akcj>$max)
  18. {
  19. $akcj=$max;
  20. $query="UPDATE user SET akcja=$akcj WHERE id='$i' ";
  21. mysql_query($query);
  22. }
  23. else
  24. {
  25. $query="UPDATE user SET akcja=$akcj WHERE id='$i' ";
  26. mysql_query($query);
  27. }
  28. $i++;
  29. }
  30.  
  31. ?>
Go to the top of the page
+Quote Post
bpskiba
post
Post #2





Grupa: Zarejestrowani
Postów: 340
Pomógł: 49
Dołączył: 3.07.2009
Skąd: Rzeszów

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


Jakiekolwiek zapytanie puszczone w pętli jest potencjalnym źródłem problemów.
Nie musi być problemem już dzisiaj (w zależności od wielkości tabel, konfiguracji serwera itd), ale kiedyś nim będzie. To tylko kwestia czasu.
Jest to zła praktyka i należy jej unikać....
Dodam, że ten skrypt można zastąpić dwoma zapytaniami SQL, które nie będą szkodliwe dla serwera niezależnie od liczby rekordów (IMG:style_emoticons/default/smile.gif)

Ten post edytował bpskiba 28.01.2013, 19:49:00
Go to the top of the page
+Quote Post
viking
post
Post #3





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


Mnie zastanawia po co klepanie obliczeń po stronie PHP skoro można wszystko od razu wyciągnąć z bazy? Druga sprawa, zerknij sobie na przykłady zapytań UPDATE http://stackoverflow.com/questions/1262786...on-select-query
Go to the top of the page
+Quote Post
kristaps
post
Post #4





Grupa: Zarejestrowani
Postów: 279
Pomógł: 36
Dołączył: 1.03.2012

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


Cytat(bpskiba @ 28.01.2013, 19:45:25 ) *
Jakiekolwiek zapytanie puszczone w pętli jest potencjalnym źródłem problemów. Nie musi być problemem już dzisiaj (w zależności od wielkości tabel, konfiguracji serwera itd), ale kiedyś nim będzie. To tylko kwestia czasu.


Możesz rozwinąć? Jasne, powyższy przykład powinno się w całości zrealizować na SQLu, ale zastanawia mnie dlaczego Twoim zdaniem połączenie mysql_query i while musi stwarzać problemy - pomijając oczywiście skrajne przykłady?
Go to the top of the page
+Quote Post
Michasko
post
Post #5





Grupa: Zarejestrowani
Postów: 283
Pomógł: 31
Dołączył: 10.01.2006
Skąd: Działoszyn

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


Chodzi o ilość zapytań generowaną w skrypcie. Załóżmy, że zmienna $ilosc (która swoją drogą nie jest dalej używana (IMG:style_emoticons/default/smile.gif) - ale równa się ilości rekordów z pierwszego zapytania) przyjmie wartość 10000. W tej chwili wykonujesz pętle składającą się z 10.000 kroków i w każdym jej obrocie wykonujesz zapytanie (w tym przypadku nawet 2) do bazy. Niezbyt to optymalne.

Ten post edytował Michasko 28.01.2013, 20:54:24
Go to the top of the page
+Quote Post
kristaps
post
Post #6





Grupa: Zarejestrowani
Postów: 279
Pomógł: 36
Dołączył: 1.03.2012

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


Tak, to logiczne. Po prostu zdanie zostało tak skonstruowane, że spodziewałem się złotej reguły, o której nie wiem. (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 6.10.2025 - 05:11