Ugrás a fő tartalomhoz

Query Monitor - WordPress Debug Eszköz

A Query Monitor a legátfogóbb ingyenes debug és teljesítményelemző bővítmény WordPress-hez. Valós időben mutatja az adatbázis lekérdezéseket, hook-okat, feltételes függvényeket, HTTP kéréseket és sok mást.

Főbb funkciók

  • Adatbázis lekérdezések - Minden SQL query részletei, ideje, hívója
  • PHP hibák - Notice, warning, error üzenetek
  • Hook-ok - Actions és filters listája
  • HTTP API hívások - Külső API kérések elemzése
  • Feltételes függvények - is_single(), is_admin() stb.
  • Szkriptek és stílusok - Betöltött JS/CSS fájlok
  • Blokkok - Gutenberg blokk információk
  • Környezet - PHP, MySQL, WordPress verzió adatok

Telepítés

WordPress admin felületen

  1. Bővítmények > Új hozzáadása
  2. Keress rá: "Query Monitor"
  3. Kattints a Telepítés most gombra
  4. Aktiváld a bővítményt

WP-CLI-vel

wp plugin install query-monitor --activate

Composer-rel

composer require wpackagist-plugin/query-monitor --dev
wp plugin activate query-monitor

Használat

A Query Monitor panel az admin bar-on található. Kattints a megjelenő információkra (pl. "0.05s 12q") a részletes panel megnyitásához.

Admin Bar jelzések

JelzésJelentés
ZöldMinden rendben
SárgaFigyelmeztetés (lassú query-k)
PirosHiba (PHP error, kritikus lassulás)

Adatbázis lekérdezések

Queries panel

Minden SQL lekérdezés részletei:

  • Query - A teljes SQL utasítás
  • Time - Végrehajtási idő (ms)
  • Rows - Érintett sorok száma
  • Caller - Melyik függvény/fájl indította
  • Component - Plugin/téma/core

Lassú lekérdezések szűrése

// wp-config.php - Lassú query küszöb beállítása
define( 'QM_DB_EXPENSIVE', 0.05 ); // 50ms felett lassú

Duplicate queries

A Query Monitor automatikusan jelzi az ismétlődő lekérdezéseket. Ezek optimalizálása jelentős teljesítményjavulást eredményezhet.

Queries by Caller

Csoportosított nézet a hívó függvények szerint - gyorsan megtalálod, melyik kód generálja a legtöbb lekérdezést.

Queries by Component

Plugin/téma szerinti csoportosítás - azonnal látod, melyik bővítmény okoz terhelést.

PHP hibák

Errors panel

Minden PHP hiba megjelenik:

  • Fatal errors - Piros háttér
  • Warnings - Narancssárga
  • Notices - Sárga
  • Deprecated - Szürke

Stack trace

Minden hibánál látod a teljes hívási láncot, így könnyen megtalálod a forrást.

Hibák szűrése

A wp-config.php-ban beállíthatod:

// Csak saját kód hibáinak megjelenítése
define( 'QM_HIDE_CORE_WARNINGS', true );
define( 'QM_HIDE_SELF', true );

Hook-ok

Hooks panel

Az összes futtatott action és filter:

  • Hook név - pl. init, wp_head
  • Priority - Futási sorrend
  • Callback - Melyik függvény fut
  • Component - Plugin/téma

Hook keresése

Használd a keresőt egy adott hook megtalálásához:

the_content
wp_enqueue_scripts
admin_init

Actions vs Filters

Külön füleken láthatod az action-öket és filter-eket.

HTTP API hívások

HTTP Requests panel

Minden külső HTTP kérés részletei:

  • URL - Cél URL
  • Method - GET, POST, stb.
  • Response - Válasz kód és idő
  • Caller - Ki indította

Lassú API hívások

A piros jelzésű kérések jelentős késleltetést okoznak. Ezeket érdemes:

  • Cache-elni (Transients API)
  • Aszinkronná tenni (WP Cron)
  • Optimalizálni vagy eltávolítani

Szkriptek és stílusok

Scripts panel

Minden betöltött JavaScript:

  • Handle - wp_enqueue_scripts azonosító
  • Source - Fájl URL
  • Dependencies - Függőségek
  • Dependents - Mi függ tőle
  • Size - Fájlméret

Styles panel

CSS fájlok hasonló részletekkel.

Nem használt szkriptek

Keresd azokat a szkripteket, amelyek:

  • Minden oldalon betöltődnek, de nem kellenek
  • Duplikálva vannak
  • Elavult jQuery függőségekkel rendelkeznek

Blokkok (Gutenberg)

Blocks panel

Block editor használatakor:

  • Block típusok - Használt blokkok listája
  • Block szám - Hány darab van belőlük
  • Render callback - Dinamikus blokkok

Feltételes függvények

Conditionals panel

Az aktuális oldal jellemzői:

FüggvényÉrték
is_single()true/false
is_page()true/false
is_archive()true/false
is_admin()true/false
is_front_page()true/false

Hasznos téma és plugin fejlesztéskor a feltételek teszteléséhez.

Környezet

Environment panel

Részletes rendszerinformációk:

  • PHP - Verzió, memória limit, max execution time
  • MySQL/MariaDB - Verzió, változók
  • WordPress - Verzió, debug mód, multisite
  • Server - OS, webszerver

PHP változók

memory_limit: 256M
max_execution_time: 300
upload_max_filesize: 64M
post_max_size: 64M

Haladó beállítások

wp-config.php opciók

// Query Monitor engedélyezése
define( 'QM_ENABLE_CAPS_PANEL', true ); // Capabilities panel

// Lassú query küszöb (másodpercben)
define( 'QM_DB_EXPENSIVE', 0.05 );

// Hide self (QM saját query-jeit elrejti)
define( 'QM_HIDE_SELF', true );

// Core warnings elrejtése
define( 'QM_HIDE_CORE_WARNINGS', true );

// Symlinked plugin path
define( 'QM_SYMLINKED_PLUGINS_PATH', '/real/path/to/plugins' );

Capabilities panel engedélyezése

// wp-config.php
define( 'QM_ENABLE_CAPS_PANEL', true );

Ez egy új panelt ad, ami az aktuális felhasználó jogosultságait mutatja.

Query Monitor Add-on-ok

Hivatalos add-on-ok

Add-onFunkció
Debug BarDebug Bar integráció
MemcacheMemcached object cache monitoring
RedisRedis object cache monitoring

Harmadik féltől

Add-onFunkció
Query Monitor ExtendTovábbi panelek
QM CLICLI parancsok

Teljesítmény optimalizálás Query Monitor-ral

1. Lassú lekérdezések azonosítása

  1. Nyisd meg a Queries panelt
  2. Rendezd Time szerint csökkenő sorrendbe
  3. Vizsgáld meg a leglassabb query-ket
  4. Ellenőrizd az indexeket a táblákban

2. N+1 problémák felismerése

Keress ismétlődő lekérdezéseket:

SELECT * FROM wp_postmeta WHERE post_id = 1
SELECT * FROM wp_postmeta WHERE post_id = 2
SELECT * FROM wp_postmeta WHERE post_id = 3
...

Megoldás: update_meta_cache() vagy egy nagy query.

3. Plugin teljesítmény elemzése

  1. Queries by Component nézet
  2. Rendezd Time szerint
  3. Azonosítsd a legtöbb időt használó pluginokat
  4. Fontold meg az alternatívákat vagy optimalizálást

4. HTTP hívások optimalizálása

  1. HTTP Requests panel
  2. Keress lassú vagy felesleges hívásokat
  3. Implementálj cache-elést:
function get_external_data() {
$cache_key = 'external_api_data';
$data = get_transient( $cache_key );

if ( false === $data ) {
$response = wp_remote_get( 'https://api.example.com/data' );
$data = wp_remote_retrieve_body( $response );
set_transient( $cache_key, $data, HOUR_IN_SECONDS );
}

return $data;
}

Frontend megjelenítés

Bejelentkezés nélküli használat

Az autentikációs cookie lehetővé teszi a frontend debug-ot bejelentkezés nélkül:

// Cookie beállítása (egyszer futtatva)
setcookie( 'wp-query_monitor_' . COOKIEHASH, wp_hash( 'query-monitor' ), 0, '/' );

Admin bar elrejtése

Ha nem akarod az admin bar-t megjeleníteni:

add_filter( 'qm/dispatch/html', '__return_false' );

REST API és AJAX

AJAX debug

Query Monitor automatikusan naplózza az AJAX hívásokat. Az admin bar jelzi az AJAX kérések számát és idejét.

REST API debug

REST API végpontok lekérdezéseit is elemzi:

  1. Nyisd meg a fejlesztői eszközöket (F12)
  2. Network fül
  3. Keresd a X-QM-* header-öket

Biztonság

Hozzáférés korlátozása

Alapértelmezetten csak adminisztrátorok látják a Query Monitor panelt.

// Szerkesztők is láthassák
add_filter( 'qm/capability', function() {
return 'edit_posts';
} );

Éles oldalon

Figyelmeztetés

NE használd éles környezetben Query Monitor-t aktiválva! Biztonsági kockázat és teljesítménycsökkenés.

// Csak development környezetben aktiválás
if ( 'development' !== wp_get_environment_type() ) {
add_filter( 'qm/dispatch/html', '__return_false' );
}

Integráció más eszközökkel

Xdebug

Query Monitor és Xdebug együtt használható mélyebb elemzéshez.

New Relic

A Query Monitor adatai exportálhatók New Relic-be egyedi instrumentációval.

Debug Bar

Ha Debug Bar is telepítve van, Query Monitor annak paneljeit is integrálja.

Források