Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Optymalizacja kodu
boro11
post
Post #1





Grupa: Zarejestrowani
Postów: 283
Pomógł: 11
Dołączył: 9.07.2010
Skąd: Warszawa

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


Witam!
Mam kod, który działa tak jak miał działać - tj. wykonuje wszystkie czynności jakie ma robić. Niestety obciąża mi serwer dosyć znacznie i spowalnia strony. Z indeksu przeniosłem go do jednej z podstron i trochę się poprawiło ale ta podstrona teraz działa wolno.

Oto kod:

  1. $sites = array();
  2. $limits = array();
  3. $count = array();
  4. $zap=array(1 => 'SELECT',2 => 'nazwa, limits',3 => 'FROM',4 => 'test_site');
  5. $query = $db->zap($zap);
  6.  
  7. while ($row = mysql_fetch_array($query))
  8. {
  9. $sites [$row['nazwa']] = $row['nazwa'];
  10. $limits [$row['nazwa']] = $row['limits'];
  11. $count [$row['nazwa']] = 0;
  12. }
  13.  
  14. $zap2=array(1 => 'SELECT',2 => 'site',3 => 'FROM',4 => 'test_sites',5 => 'WHERE ((status = "Approved") OR (status = "Pending"))');
  15. $quer = $db->zap($zap2);
  16. while ($row2 = mysql_fetch_array($quer))
  17. {
  18. if (in_array($row2['site'],$sites)) $count[$row2['site']]++;
  19.  
  20. if (($count[$row2['site']] > $limits[$row2['site']]) && ($limits[$row2['site']] != '~') && ($limits[$row2['site']]!='') && ($limits[$row2['site']]!='0'))
  21. {
  22. $zap3=array(1 => 'UPDATE',2 => 'test_site',3 => 'SET',4 => 'status="LIMITED"',5 => 'WHERE ((nazwa="'.$row2['site'].'") AND (status<>"SCAM"))');
  23. $db->zap($zap3);
  24. }
  25. }
  26.  
  27. $zap=array(1 => 'SELECT',2 => 'nazwa, limits',3 => 'FROM',4 => 'test_site');
  28. $query2 = $db->zap($zap);
  29. while ($row2 = mysql_fetch_array($query2))
  30. {
  31. if (isset($count[$row2['nazwa']])) $put = $count[$row2['nazwa']].'/'.$row2['limits'];
  32. else $put = '0/'.$row2['limits'];
  33. $zap=array(1 => 'UPDATE',2 => 'test_site',3 => 'SET',4 => 'refkow = "'.$put.'"',5 => 'WHERE nazwa="'.$row2['nazwa'].'"');
  34. $db->zap($zap);
  35. }


Dałoby się to jakoś zoptymalizować lub zrobić żeby robiło się np. raz na 10 minut, a nie z każdym wczytaniem strony?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Olbrych
post
Post #2





Grupa: Zarejestrowani
Postów: 10
Pomógł: 2
Dołączył: 1.02.2010

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


Robisz kilka pętli i w nich zapytania. Jeżeli masz bardzo dużo rekordów to robisz masakrycznie dużo updatów. Musisz to przepisać w sql i robić update za jednym zamachem wszystkiego bo inaczej nie ma szans na szybkie działanie.
Zrób echo wszystkich zapytań to będzie lepiej widać jak można to napisać.
Go to the top of the page
+Quote Post

Posty w temacie


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: 8.10.2025 - 08:06