Profilowanie i optymalizacja w Magento

Jednym z pierwszych pytań rekrutacyjnych jakie dostawałam było „Jakie znasz techniki debugowania kodu?”

Nie ukrywam, że reprezentuje starą szkołę i dla mnie najlepiej jeśli mogę zrzucić błąd na ekran. Niemniej jednak nie zawsze jest to możliwe. Mimo iż, staram się wiedzieć wszystko o kodzie, który rozwijam, zawsze znajdzie się błąd duch. To ta strona pracy developera, która nie jest dla każdego ale każdy się z nią zmierzy. Siedzisz i godzinami zastanawiasz się „Czemu to nie działa?!” albo co gorsza „Jak to możliwe, że to działa?!”.

Mnie takie zagadki budują. Nie da się ich jednak rozwiązać bez dobrych narzędzi.

Xdebug

Jedno z podstawowych narzędzi. Bardzo przydatne w pracy z lokalnym kodem. Na co dzień  korzystam z PHPStorm i z tym IDE mam go skonfigurowanego.

Jest wiele opracowań na temat xdebug’a wiec nie będę powielać treści. To co mnie się najbardziej przydaje w tym narzędziu to możliwość skakania między break pointami oraz możliwość wykonywania dowolnego kodu będąc w jakimś z tych punktów. Tak więc mogę się zatrzymać w konkretnym miejscu i sprawdzać / testować obiekty, ich metody i właściwości.

Xdebug pomaga też w optymalizacji kodu, dzięki precyzyjnym statystykom czasowym wykonywania się skryptów.

Firephp

Idealne narzędzie do  debugowania żądań ajaxowych.  Fakt faktem podobny efekt można uzyskać korzystając z xdebuga ale jeśli z jakiś względów nie można go uruchomić lub testy wykonywane są na środowisku produkcyjnym Firephp sprawdza mi się idealnie.  Wystarczy zainstalować moduł  i skonfigurować go:

System->Configuration->Developer->Debug->FirePHP
System->Configuration->Developer->Developer Client Restrictions->Allowed IPs

a później tylko korzystać z odpowiedniego helpera:

Mage::helper(‘firephp’)->send(‘test’);
Mage::helper(‘firephp’)->debug(Mage::getModel(‘catalog/product’)->load(1));

Jeżeli mamy zainstalowane rozszerzenie firephp w przeglądarce response zobaczymy w konsoli.

New Relic

New Relic ardzo mocno przydaje się podczas optymalizacji podczas wychwytywania wąskich gardeł . Nie jest to jednak jedyne zastosowanie tego narzędzia. Monitoruje on bardzo dokładnie pracę całego skryptu od request’a po sam response. Możemy sprawdzić ile czasu a przede wszystkim w której warstwie ile co zajmuje naszej aplikacji. W logach odciskają się wszelkie niedostępności i błędy.

Długo by można opowiadać o możliwościach. Potężne narzędzie do diagnostyki a jego jedyną wadą chyba jest tylko, że jest płatne. Można jednak w okrojonej formie korzystać z niego za darmo.