Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] ile osob jest na stronie
Forum PHP.pl > Forum > Przedszkole
bialko0019
Witam. Stworzyłem własny slrypt, który pokazuje ile jest osób, z ostatnich 60 sekund. Jest to prowizorka, bo wydaje mi się, że strasznie obciąża serwer i bazę danych, co spowalnia wgrywa się strony. Jak można go przerobić, by mniej obciążał ? Skrypt sam wykonałem, nie korzystałem z niczego darmowego...

  1.  
  2. <?php
  3.  
  4. $polaczenie = mysql_connect('xxx', 'xxx', 'xxx');
  5. $db = mysql_select_db('xxx');
  6. $ip_aktualny = $_SERVER['REMOTE_ADDR'];
  7.  
  8. $czas_aktualny = time();
  9. $czas_sprawdzany = time()-60;
  10.  
  11. $zapytanie = "SELECT * FROM online WHERE czas BETWEEN $czas_sprawdzany AND $czas_aktualny AND ip LIKE '$ip_aktualny'";
  12. $query = mysql_query($zapytanie);
  13. $czy = mysql_num_rows($query);
  14.  
  15.  
  16. if($czy <= 0)
  17. {
  18.  
  19. $zapytanie1 = "INSERT INTO online SET czas='$czas_aktualny', ip='$ip_aktualny'";
  20. $query1 = mysql_query($zapytanie1);
  21.  
  22. }
  23. else
  24. {
  25. echo "";
  26. }
  27.  
  28.  
  29. $zapytanie2 = "SELECT * FROM online WHERE czas > $czas_sprawdzany AND czas < $czas_aktualny";
  30. $query2 = mysql_query($zapytanie2);
  31. $ile = mysql_num_rows($query2);
  32.  
  33.  
  34.  
  35. if($ile == 1)
  36. {
  37. echo "jest <b>$ile osoba</b>";
  38. }
  39. else
  40. {
  41.  
  42. if($ile > 1 && $ile < 5)
  43. {
  44. echo "sa <b>$ile osoby</b>";
  45. }
  46. else
  47. {
  48.  
  49. if($ile >= 5)
  50. {
  51. echo "sa <b>$ile osób</b>";
  52. }
  53.  
  54. }
  55. }
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63. ?>
  64.  


Czekam na odpowiedzi winksmiley.jpg
Fifi209
Mogę zaproponować cachowanie wyników zwracanych przez mysql.
Pawel_W
dodaj LIMIT 1, to też powinno przyspieszyć
bialko0019
dzięki winksmiley.jpg Jeszcze jakieś propozycje ? ;]
Fafu
  1. ip LIKE '$ip_aktualny'
zamien na
  1. ip = '$ip_aktualny'
biggrin.gif
Z takim czyms jeszcze sie nie spotkalem tongue.gif
  1. INSERT INTO online SET czas='$czas_aktualny', ip='$ip_aktualny

zawsze uzywalem
  1. INSERT INTO online (`czas`, `ip`) VALUES ('$czas_aktualny','$ip_aktualny)
Fifi209
Cytat(Fafu @ 10.08.2009, 20:33:03 ) *
Z takim czyms jeszcze sie nie spotkalem tongue.gif
  1. INSERT INTO online SET czas='$czas_aktualny', ip='$ip_aktualny

zawsze uzywalem
  1. INSERT INTO online (`czas`, `ip`) VALUES ('$czas_aktualny','$ip_aktualny)


Ale działa, jednak gdzieś czytałem, że wersja druga jest bardziej poprawna.
bialko0019
acha, no dziękuję za odpowiedzi winksmiley.jpg Widzę, że już to chyba wsyztskie, więc dziękuję winksmiley.jpg

Cytat
Ale działa, jednak gdzieś czytałem, że wersja druga jest bardziej poprawna.


Ja tak się nauczyłem, w jakimś kursie przeczytałem...
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.