Profilowanie PHP za pomocą Xdebug
Włącz profilowanie Xdebug i analizuj dane wyjściowe callgrind, aby znajdować wolne funkcje
Profilowanie PHP za pomocą Xdebug to bezpłatna lekcja PHP Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej PHP Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs PHP Academy zawiera 4 lekcji w sumie.
Czym jest Xdebug?
Xdebug to rozszerzenie PHP zapewniające funkcje debugowania, analizy pokrycia kodu i profilowania. Profiler rejestruje czas trwania każdego wywołania funkcji oraz liczbę jego wystąpień.
Instalacja Xdebug
Należy zainstalować go za pomocą PECL lub menedżera pakietów.
# Via PECL:
$ pecl install xdebug
# Via apt:
$ apt install php-xdebug
# Verify:
$ php -v | grep XdebugWłączanie profilera
Aby włączyć profilowanie, należy skonfigurować Xdebug w pliku php.ini.
# php.ini
[xdebug]
zend_extension=xdebug.so
xdebug.mode=profile
xdebug.output_dir=/tmp/xdebug
xdebug.profiler_output_name=cachegrind.out.%tProfilowanie wyzwalane żądaniem
Zamiast profilować każde żądanie, należy użyć wyzwalacza, aby uruchamiać profilowanie na żądanie.
# php.ini
xdebug.mode=profile
xdebug.start_with_request=trigger
# Trigger via query parameter or cookie:
curl "https://example.com/?XDEBUG_PROFILE=1"Dane wyjściowe Callgrind
Xdebug zapisuje plik cachegrind.out.*. Ten format jest odczytywany przez narzędzia do wizualizacji profilowania.
Analiza za pomocą KCachegrind / QCachegrind
Należy otworzyć plik callgrind w KCachegrind (Linux) lub QCachegrind (macOS/Windows), aby zobaczyć: liczbę wywołań funkcji, łączny czas, czas własny i drzewo wywołań.
Analiza za pomocą WebGrind
WebGrind to przeglądarkowa przeglądarka plików callgrind — łatwiejsza w konfiguracji niż narzędzie desktopowe.
$ docker run -p 8080:80 jokkedk/webgrind -v /tmp/xdebug:/tmpOdczytywanie danych profilera
Należy szukać funkcji o najwyższym „koszcie inkluzywnym” (łącznym czasie wraz z wywoływanymi funkcjami) oraz „koszcie własnym” (czasie spędzonym wyłącznie w treści funkcji). Koszt własny wskazuje rzeczywiste wąskie gardło.
Typowe znalezione wąskie gardła
Typowe problemy to: zapytania do bazy danych typu N+1, nieefektywne wyrażenia regularne, zbędne wywołania API, niezoptymalizowane relacje Eloquent i kosztowne renderowanie widoków.
Profilowanie a debugowanie
Profilowanie mierzy wydajność (czas i liczbę wywołań). Debugowanie, które również jest funkcją Xdebug, wstrzymuje wykonywanie w punktach przerwania na potrzeby analizy kodu. Należy używać oddzielnych trybów Xdebug.
Blackfire jako alternatywa
Blackfire.io to komercyjne narzędzie do profilowania z dopracowanym interfejsem, integracją z CI i asercjami wydajności. W środowiskach zespołowych jest preferowane zamiast surowego profilowania za pomocą Xdebug.
Podsumowanie
Należy włączyć tryb profilera Xdebug w pliku php.ini, wykonać żądanie i otworzyć plik callgrind w KCachegrind lub WebGrind. Aby znaleźć wąskie gardła, należy skupić się na funkcjach o najwyższym koszcie inkluzywnym i własnym.
Szybki test
Co oznacza „koszt własny” w raporcie profilera?
Często zadawane pytania
Czy lekcja „Profilowanie PHP za pomocą Xdebug” jest bezpłatna?
Tak — pełny tekst „Profilowanie PHP za pomocą Xdebug” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu PHP Academy, przejdź na CoddyKit PRO. Kurs PHP Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Profilowanie PHP za pomocą Xdebug”?
Włącz profilowanie Xdebug i analizuj dane wyjściowe callgrind, aby znajdować wolne funkcje Ćwiczysz PHP Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć PHP Academy?
Nie wymagamy żadnego doświadczenia. PHP Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Profilowanie PHP za pomocą Xdebug”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji PHP Academy?
Tak. Każda lekcja PHP Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Profilowanie PHP za pomocą Xdebug
- OPcache: buforowanie kodu bajtowego
- Optymalizacja zapytań do bazy danych
- Zarządzanie pamięcią i wskazówki dotyczące wydajności