Onafhankelijke vergelijking · geen betaalde rankings
Home / Blog / Technisch / Profiler PHP: meet voordat u een lijn optimaliseert

Profiler PHP: meet voordat u een lijn optimaliseert

Het vervangen van een lus door een SQL-query zonder profilering is willekeurig optimaliseren. Blackfire, Xdebug en SPX bestaan ​​om dit te voorkomen.

Redactie Hébergeurs.eu 4 min Bijgewerkt 19 jul. 2026

Enthousiaste ontwikkelaar: Redis-cache op de gehele configuratie, latentie op de startpagina met dertig procent verminderd. De betaaltunnel blijft op vier seconden staan. Niemand heeft de betalingstunnel geprofileerd; de tijd leeft in zevenenveertig SQL-query's die worden geactiveerd door een Laravel-accessor met een slechte naam. Redis maakte wat al snel was nog sneller.

Het profileren van PHP is geen stap ‘als je tijd hebt’. Het is het anti-debat tussen intuïtie en meten. Zonder een vlammende grafiek herschrijf je code; hiermee val je de vijf procent van de oproepgrafiek aan die tachtig procent van de tijd kost.

Hulpmiddelen per context

GereedschapMilieuOverbelasting
Blackfire / TidewaysPre-productie + sampling productieLaag
SPXOntwikkeling/pre-productie, productie mogelijkZeer laag
Xdebug-traceAlleen ontwikkeling/preproductieHoog
PHP-FPM slowlogProductieMinimaal
APM-monitoring (Datadog, Sentry)ProductieVarieert

Aanbevolen werkstroom:

  1. Toezicht identificeert de langzame weg op het 95e percentiel.
  2. Blackfire- of SPX-profielen deze URL onder gesimuleerde belasting.
  3. Correctie (SQL, cache, algoritme).
  4. Herprofileren – gecodeerd bewijs van winst.

Maak geen profiel van de startpagina als op het ticket “export CSV admin in timeout” staat.

Lees de resultaten zonder te verdwalen

Algemene signalen:

Dominante functieActie
PDOStatement->uitvoerenUITLEGGEN, indexeren, ORM vooraf laden
curl_execTime-out, cache, asynchrone verwerking
file_get_contentsLokale I/O, streams, objectopslag
unserialize / grote json_decodePayload-indeling, cache
enorme preg_matchRegex-refactoring of parsing

Integratie in continue integratie en pre-productie

  • Blackfire-vergelijkingen op pull-aanvragen als het budget dit toelaat.
  • Regressiedrempel: plus tien procent van de muurtijd blokkeert de fusie (kritieke routes).
  • Geanonimiseerde dataset dichtbij verplichte productie – geprofileerd op drie regels in de database.

De profiler onthult soms infrastructuurlimieten: schijf-I/O op sessiebestanden → Redis-sessies; trage DNS-resolutie → vaste resolver; OPcache uitgeschakeld → onmiddellijke activering. Het upgraden van VPS vóór het profileren blijft een vaak voorkomende verspilling.

Voordat u een “instance too small”-ticket opent, profileert u de langzame route die door monitoring is geïdentificeerd. Verwijs naar OPcache Invalidation als de recente implementatie een mix van oude en nieuwe versies van de code zou kunnen bieden.

De top: optimaliseren zonder profilering is refactoring voor de lol

Dit is wat vrijdagavond "Ik heb een lijn geoptimaliseerd" vergeet te laten zien.

Teamregel: gesloten prestatieticket met opname voor/na — Blackfire-link of SPX-export.

Beslis en ga vooruit zonder blinde vlek

Gedurende een halve dag kunt u een meetdiscipline vaststellen:

  1. Identificeer de doelroute via APM-monitoring of slowlog.
  2. Profiel in pre-productie onder realistische belasting.
  3. Repareer alleen de bovenkant van de brandende grafiek.
  4. Hermeet het 95e percentiel in de productie.
  5. Documenteer de les – klassieke N+1-query's?

Begin met de route die gebruikers daadwerkelijk verwachten – niet degene die je het vaakst bekijkt tijdens de ontwikkeling. Kruis PHP-FPM saturation, Missing MySQL index en EXPLAIN PostgreSQL aan volgens uw basisengine.

Veelgestelde vragen

Welke tool moet je profileren in de productie?

SPX- of Blackfire/Tideways-lichtbemonstering. Nooit Xdebug in stapsgewijze modus in productie. Het langzame PHP-FPM-querylogboek is voldoende om lange I/O te detecteren zonder volledige overhead.

Is Xdebug profiler voldoende in staging?

Ja, als de data en het verkeer bijna productierijp zijn. Maak een profiel van langzame routes die door monitoring zijn geïdentificeerd, en niet alleen de startpagina die de echte knelpunten verbergt.

Hoe lees ik een vlamgrafiek?

De breedte vertegenwoordigt de cumulatieve tijd. Zoek naar onverwachte brede balken: PDO, krullen, niet-serialiseren. Optimaliseer eerst de grootste, volgens de wet van Pareto.

Profiler toont PDO traag — wat te doen?

Voer EXPLAIN uit op de SQL-query, controleer indexen en ORM N+1-query's. De profiler laat zien waar de tijd is verstreken; EXPLAIN legt uit waarom de basis traag reageert.


Het meten van een PHP-regel kost minder dan het twee keer herschrijven – eerst het profiel, daarna het ego.

Vergelijk Europese providers

Filter op compliance, locatie en gebruikssituatie — open daarna de fiches om het echte bereik te controleren.

Blader door het overzicht
Blog

Gerelateerde lectuur

Alle artikelen →