Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Debugger - Wąskie gardło
Forum PHP.pl > Forum > PHP
cojack
Chciałbym się zapytać Was jaki macie sposób na rozwiązanie tego problemu z wąskim gardłem w debuggerze. Otóż jeżeli chcemy posiadać informację o czasie wykonania się poszczególnych metod w naszej aplikacji, to piszemy sobie np dwie funkcje w debuggerze start() i stop() które mierzą czas wykonania się metody. Teraz w takiej metodzie te dwie funkcje trzeba odpalić, także przykład:

  1.  
  2. public function waskieGardlo() {
  3. debugger::start( __CLASS__, __FUNCTION__ );
  4. // coś se tu robimy coś tam coś
  5. debugger::stop();
  6. }


no i teraz mamy wywołaną dwie metody nie potrzebnie gdy np nie mamy włączonego debuggera, także zróbmy to inaczej:

  1. public function waskieGardlo() {
  2. if( debugger::$enable ) {
  3. debugger::start( __CLASS__, __FUNCTION__ );
  4. // coś se tu robimy coś tam coś
  5. }
  6. if(debugger::$enable)
  7. debugger::stop();
  8. }


Teraz dwa razy sprawdzamy czy debbuger jest włączony, co mi też się zbytnio nie podoba, to może inaczej:

  1. public function waskieGardlo() {
  2. if( debugger::$enable ) {
  3. debugger::start( __CLASS__, __FUNCTION__ );
  4. // coś se tu robimy coś tam
  5. debugger::stop();
  6. } else
  7. // coś se tu robimy coś tam
  8. }


Teraz podwójnie piszemy kod którą jest już napisany + np wyłapywanie błędów itp... Jest też i czwarta metoda:

  1. public static function start( $class, $method ) {
  2. if( self::$enable ) {
  3. // sprawdzamy sobie czas
  4. }
  5. }
  6.  
  7. public static function stop() {
  8. if( self::$enable ) {
  9. // zliczamy sobie czas
  10. }
  11. }


I taka opcja w połączeniu z pierwszą opcją wydaje się być najbardziej optymalną, ale, aczkolwiek nie wydaje mi się być najlepszą. Macie na to jakieś rozwiązanie? Pusta klasa debuggera w ogóle mnie nie interesuje, czy tam puste metody, to odpada.
nospor
a nie mozesz po prostu włączyc profilera, odpalic skrypt a nastepnie logi z profilera przejrzec w specjalnym programie? Tam ładnie widać co jest wąskim gardłem.
cojack
Cytat
a nie mozesz po prostu włączyc profilera,


yyy czego?
nospor
myslalem ze uzywasz XDEBUG
Jesli wiec nie uzywasz to się nim zainteresuj. Bardzo ułatwi ci życie w tych sprawach winksmiley.jpg
cojack
Masz może jakiś dobry artykuł jak to z eclipse (pdt) połączyć w kupę i jak to używać?
nospor
ale ty miales profilowac a nie debugowa. do profilowania eclipse nie jest potrzebny smile.gif
Ustawiasz w php.ini wpisz ze chcesz profilowac i odpalasz skrypt. Nastepnie wszystko co sie dzieje, wlacznie z czasem i pamiecia jest logowane. Nastepnie przy pomocy np. kCacheGrind mozesz przeanalizowac te logi, znaleźć wąskie gardło, wizuwalnie przejrzec rezultaty

A jesli chcesz debugowac w eclipse to ja korzystalem z samego opisu co w necie znalazlem przy okazji xdebug i eclipse
zzeus
http://devzone.zend.com/article/2803-Introducing-xdebug - tutaj masz bardzo fajnie opisane to co będzie Ci potrzebne
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.