Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP+MySQL] Ilość zapytań
Forum PHP.pl > Forum > PHP
lukasamd
Witam,
w jaki sposób można sprawdzić ilość zapytań wykonywanych do bazy MySQL przez dany skrypt PHP?
Kowalikus
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. ?>
MajareQ
  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. ?>
Virti
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.
MajareQ
Hmmm... sprawdzę na stronie/ forum PDO tongue.gif

wyedytuję tego posta jak coś...
nowotny
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...
Virti
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.
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.