Rozmawiając ostatnio z ludźmi z branży (np. podczas interview), którzy zarzekają się, że znają i korzystają z Zend Framework okazuje się, że ich wiedza kończy się często na etapie wklepywania kodu do kontrolera.
Dlatego postanowiłem, że różnymi banalnymi, ale użytecznymi rzeczami z ZF będę dzielił się z Wami na moim blogu.
Wczoraj chciałem zoptymalizować bazę i musiałem zobaczyć dokładne zapytania SQL, które idą do bazy zewn. i ich czasy wykonywania.
Z samymi zapytaniami może nie byłoby problemu dla początkującego programisty z wykorzystaniem ZF – wystarczy jakieś wyplucie obiektów Zend_Db_Select na ekran, ale czasy trwania ?
Z pomocą przychodzi nam pakiet Zend_Db_Profiler. Aby nie śmiecić sobie na ekranie aplikacji, polecam zainstalować FirePHP dla Firefoksa, wtedy możemy skorzystać z Zend_Db_Profiler_Firebug i w wyniki przeglądać w konsoli Firebug’a. Poniżej przedstawiam wtyczkę:
1 2 3 4 5 6 7 8 9 10 11 12 |
class Zextend_Controller_Plugin_DbProfiler extends Zend_Controller_Plugin_Abstract { public function preDispatch(Zend_Controller_Request_Abstract $request) { $db = Zend_Db_Table_Abstract::getDefaultAdapter(); $profiler = new Zend_Db_Profiler_Firebug('DB - All Queries'); $profiler->setEnabled(true); $db->setProfiler($profiler); } } |
Następnie wystarczy w pliku konfiguracyjnym naszej aplikacji (configs/application.ini) włączyć działanie wtyczki:
1 2 |
resources.frontController.plugins.dbProfiler = "Zextend_Controller_Plugin_DbProfiler" |
Od tego momentu w Firebugu zobaczymy wszystkie zapytania SQL, które idą do bazy wraz z ich parametrami i czasami wykonywania.