opentelemetry-php/examples/traces/features/batch_exporting.php

44 lines
1.2 KiB
PHP

<?php
declare(strict_types=1);
namespace OpenTelemetry\Example;
require __DIR__ . '/../../../vendor/autoload.php';
use OpenTelemetry\API\Common\Time\Clock;
use OpenTelemetry\SDK\Trace\SpanExporter\ConsoleSpanExporterFactory;
use OpenTelemetry\SDK\Trace\SpanProcessor\BatchSpanProcessor;
use OpenTelemetry\SDK\Trace\TracerProvider;
$delayMillis = 3000;
echo 'Starting ConsoleSpanExporter with BatchSpanProcessor' . PHP_EOL;
echo sprintf('Sending batches every %dms and on shutdown', $delayMillis) . PHP_EOL;
$tracerProvider = new TracerProvider(
new BatchSpanProcessor(
(new ConsoleSpanExporterFactory())->create(),
Clock::getDefault(),
2048, //max spans to queue before sending to exporter
$delayMillis, //batch delay milliseconds
)
);
$tracer = $tracerProvider->getTracer('io.opentelemetry.contrib.php');
$rootSpan = $tracer->spanBuilder('root')->startSpan();
$scope = $rootSpan->activate();
//3 spans should be sent at 3 seconds
for ($i = 1; $i <= 4; $i++) {
$span = $tracer->spanBuilder('span-' . $i)->startSpan();
sleep(1);
$span->end();
}
//4th span and root span should be sent on shutdown
$rootSpan->end();
$scope->detach();
sleep(1);
$tracerProvider->shutdown();