## Einführung in PHP und DTrace

DTrace ist ein Tracing-Framework, das immer verfügbar ist, einen geringen zusätzlichen Rechenaufwand verursacht und auf vielen Plattformen wie Solaris, macOS, Oracle Linux und BSD zur Verfügung steht. DTrace kann das Verhalten des Betriebssystems und die Ausführung von Benutzerprogrammen verfolgen. Es kann Parameterwerte anzeigen und zur Abschätzung von Leistungsstatistiken verwendet werden. Prüfsonden (Probes) werden durch vom Benutzer erstellte Skripte, die in der DTrace-Skriptsprache D geschrieben sind, überwacht. Dies ermöglicht eine effiziente Analyse der Datenpunkte.

PHP-Sonden, die nicht aktiv vom DTrace-D-Skript eines Benutzers überwacht werden, enthalten keinen Instrumentierungscode, sodass es während der normalen Ausführung der Anwendungen keine Leistungseinbußen gibt. Sonden, die überwacht werden, verursachen im Allgemeinen einen so geringen zusätzlichen Rechenaufwand, dass die Überwachung mit DTrace auf Produktivsystemen möglich ist.

PHP verfügt über USDT-Sonden, die zur Laufzeit ausgelöst werden (USDT: User-level Statically Defined Tracing; statisch definiertes Tracing auf Benutzerebene). Wenn ein D-Skript zum Beispiel PHP's `function-entry`-Sonde überwacht, löst diese Sonde bei jedem Funktionsaufruf den entsprechenden D-Skript-Aktionscode aus. Dieser Aktionscode könnte zum Beispiel die Parameter der Sonde, also z. B. den Speicherort der Quelldatei dieser PHP-Funktion, ausgeben. Oder die Aktion könnte Daten sammeln, z. B. wie oft jede Funktion aufgerufen wird.

Hier werden nur die PHP-USDT-Sonden beschrieben. Um zu erfahren, wie DTrace verwendet werden kann, um beliebige Funktionen und das Verhalten des Betriebssystems zu überwachen, sind die allgemeine und die betriebssystemspezifische DTrace-Literatur zu empfehlen. Es ist zu beachten, dass nicht alle DTrace-Funktionen in allen DTrace-Implementierungen verfügbar sind.

Die statischen DTrace-Sonden in PHP können auf einigen Linux-Distributionen alternativ auch mit SystemTap verwendet werden.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open