Naar hoofdinhoud gaan
Het AppSignal voor PHP-pakket biedt out-of-the-box instrumentaties voor uw PHP-applicatie. Soms hebt u echter fijnmazige observability nodig, waarvoor handmatige instrumentatie vereist is. Gebruik in dat geval de methode Appsignal::instrument en pas de gegevens die naar AppSignal worden gestuurd aan met behulp van de helper-methoden.
Gegevens die naar AppSignal worden gestuurd, mogen geen persoonsgegevens bevatten, zoals namen of e-mailadressen. Saneer de gegevens van uw applicatie voordat u ze naar AppSignal stuurt. Als u een persoon moet identificeren, gebruik dan alternatieven zoals een gebruikers-ID, hash of pseudoniem.

Spans aanmaken

De Appsignal-klasse biedt een helper voor het aanmaken van spans.

instrument

Maakt een nieuwe span aan en activeert deze. Geef een closure mee om de span automatisch te laten sluiten, of laat deze weg om de levenscyclus van de span handmatig te beheren.

Met een closure

Als u een closure gebruikt, sluit AppSignal de actieve span automatisch.
PHP
Appsignal::instrument(
	name: 'process-order',
	attributes: ['order_id' => $orderId],
	closure: function () {
		// do work here
		Appsignal::setAttributes(['order_status' => 'processed']);
	},
);

Zonder closure

Zonder een closure retourneert de methode instrument een instantie van de klasse ActiveSpan, een dunne wrapper rondom de OpenTelemetry-span en zijn scope. Sluit deze span handmatig door $span->end() aan te roepen.
PHP
$activeSpan = Appsignal::instrument(
	name: 'upload-file',
	attributes: ['file_name' => $filename],
);

try {
    uploadFile($file);
} catch (Throwable $e) {
    Appsignal::setError($e);
} finally {
    $activeSpan->end();
}

Helpers

De basisklasse Appsignal biedt helper-methoden om aangepaste gegevens toe te voegen aan traces of spans. In de volgende secties wordt elke helper beschreven.
De onderstaande codevoorbeelden gaan ervan uit dat uw code al wordt geïnstrumenteerd (bijvoorbeeld binnen een Laravel- of Symfony-routehandler). Als uw code nog niet wordt geïnstrumenteerd, moet u een root-span aanmaken door Appsignal::instrument() aan te roepen en de helpers daarbinnen te gebruiken.

addAttributes

Voeg attributen toe aan de huidige span.
PHP
Appsignal::addAttributes([
    'user_id'   => $user->id,
    'user_plan' => $user->plan,
]);

addHeaders

Voegt request headers toe aan de huidige span. Als de headernaam al bestaat, wordt de waarde overschreven. Request headers worden in AppSignal getoond voor gesamplede traces. Zie de handleiding voor het aanpassen van request headers voor meer informatie.
PHP
Appsignal::addHeaders(['custom-header' => 'some-value']);

addTags

Voeg tags toe aan de huidige span. Tags verschijnen als filterbare metadata in AppSignal en krijgen intern het voorvoegsel appsignal.tag..
PHP
Appsignal::addTags([
    'locale'  => 'en',
    'version' => '2.1.0',
]);
Zie de handleiding voor tagging voor meer informatie over hoe tags werken in AppSignal.

setAction

Stelt de actienaam in op de huidige span. AppSignal toont dit als de transactienaam en gebruikt het om samples te groeperen.
PHP
Appsignal::setAction('OrdersController::create');

setNamespace

Stelt de namespace in van de root-span.
PHP
Appsignal::setNamespace('admin');

setParams

Stelt de queryparameters in van de inkomende request. De $params moeten een waarde zijn die als JSON kan worden geserialiseerd.
PHP
$params = [
    'param1' => 'value1',
    'param2' => 'value2',
    'nested' => [
        'param3' => 'value3',
        'param4' => 'value4',
    ],
];

Appsignal::setParams($params);

setPayload

Stelt de payload in van de inkomende request. De $payload moet een waarde zijn die als JSON kan worden geserialiseerd.
PHP
$payload = [
    'key1' => 'value1',
    'key2' => 'value2',
    'nested' => [
        'key3' => 'value3',
        'key4' => 'value4',
    ],
];

Appsignal::setPayload($payload);

ActiveSpan

Appsignal::instrument() retourneert een ActiveSpan-instantie die alle standaard OpenTelemetry API SpanInterface-methoden proxy’t. Als u low-level controle over de span nodig hebt, gebruik dan deze methoden om er rechtstreeks gegevens of events aan te koppelen.
PHP
$activeSpan = Appsignal::instrument('render-report');
$activeSpan->setAttribute('report.type', 'pdf');
$activeSpan->addEvent('rendering-started');

someExpensiveMethod();

$activeSpan->end();