Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP+MySQL] Ilość zapytań, jak sprawdzić?
-lukasamd-
post 18.02.2008, 07:56:58
Post #1





Goście







Witam,
w jaki sposób można sprawdzić ilość zapytań wykonywanych do bazy MySQL przez dany skrypt PHP?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Kowalikus
post 18.02.2008, 08:54:51
Post #2





Grupa: Zarejestrowani
Postów: 111
Pomógł: 25
Dołączył: 23.07.2004

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


Nie ma bezpośrednio takiej funkcji, ale możesz sobie napisać coś takiego samemu (inkrementując zmienną każdorazowo gdy wykona się zapytanie).

Tutaj przykład jeśli używasz obiektowego mysqli do połączenia z bazą.

  1. <?php
  2. class myMySQLi extends mysqli
  3. {
  4. private $numQueries = 0;
  5.  
  6. public function query($query, $resultmode = MYSQLI_STORE_RESULT)
  7. {
  8. $this->numQueries++; 
  9. return parent::query($query, $resultmode);
  10. }
  11.  
  12. public function getNumQueries()
  13. {
  14. return $this->numQueries;
  15. }
  16. }
  17. ?>


--------------------
Go to the top of the page
+Quote Post
MajareQ
post 18.02.2008, 12:38:31
Post #3





Grupa: Zarejestrowani
Postów: 382
Pomógł: 22
Dołączył: 21.05.2007
Skąd: Elbląg

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


  1. <?php
  2.  
  3. class sql
  4. {
  5. var $q_count = 0;
  6. var $r_count = 0;
  7. var $ostatnich = 0;
  8.  
  9. // tutaj konstruktor i inne mało interesujące sprawy :)
  10.  
  11. // funkcja odpowiedzialana za wykonanie zapytania - odpowiednik mysql_query();
  12.  
  13. function query( $query )
  14. {
  15. $this -> q_count++; // ilość zapytań +1
  16. // zapytaj
  17. if( !$this -> result = @mysql_query( $query ) )
  18. {
  19. return false;
  20. }
  21. // dodaj ilość wierszy w wyniku
  22. $wierszy = $this -> num_rows( $this -> result );
  23. $this -> r_count += $wierszy;
  24. // zamiastt wywolywac drogi raz num_rows
  25. $this -> ostatnich = $wierszy;
  26. // zwróć wynik
  27. return $this -> result;
  28. }
  29.  
  30. // dalsze metody klasy
  31. }
  32.  
  33. ?>

W łatwy sposób można później wyciągnąć ilość wierszy i zapytań. Przykładowo:
  1. <?php
  2.  
  3. $db = new sql( "user", "pass", "host" );
  4. $db -> select( "baza" );
  5.  
  6. // kod wykorzystujący bazę danych.
  7.  
  8. echo "Wykonano ". $db -> q_count ." zapytań. W wynikach ". $db -> r_count ." wierszy";
  9.  
  10. ?>
Go to the top of the page
+Quote Post
Virti
post 18.02.2008, 14:15:35
Post #4





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 11.01.2005
Skąd: Zduńska Wola

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


A czy jest możliwość policzenia zapytań, jeżeli korzystam z PDO?
Mam na myśli, czy twórcy PDO przewidzieli taką możliwość, np. zmienną lub metodę? Oraz czy PDO zlicza czas wykonywania zapytań?

[edit] na swoją obronę dodam, że przeglądałem manual, ale nie znalazłem nic, co mogłoby chociaż trochę naprowadzić na metody służące do tych celów...

Pozdrawiam.

Ten post edytował Virti 18.02.2008, 14:29:50
Go to the top of the page
+Quote Post
MajareQ
post 18.02.2008, 14:21:18
Post #5





Grupa: Zarejestrowani
Postów: 382
Pomógł: 22
Dołączył: 21.05.2007
Skąd: Elbląg

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


Hmmm... sprawdzę na stronie/ forum PDO tongue.gif

wyedytuję tego posta jak coś...
Go to the top of the page
+Quote Post
nowotny
post 18.02.2008, 15:08:06
Post #6





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


Cytat(Virti @ 18.02.2008, 14:15:35 ) *
A czy jest możliwość policzenia zapytań, jeżeli korzystam z PDO?

Tak... robi się to tak samo jak wyżej...
Go to the top of the page
+Quote Post
Virti
post 18.02.2008, 15:13:30
Post #7





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 11.01.2005
Skąd: Zduńska Wola

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


Masz na myśli przykład Kowalikusa? Rozszerzyć klasę PDO i nadpisać jej funkcje? Czy napisać oddzielny sterownik? Pytam ponieważ napisanie sterownika dorównującego wydajnością/możliwościami klasie PDO może być dosyć trudne, czasochłonne.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 20:35