diff options
| author | Saumit <justsaumit@protonmail.com> | 2025-09-27 02:14:26 +0530 |
|---|---|---|
| committer | Saumit <justsaumit@protonmail.com> | 2025-09-27 02:14:26 +0530 |
| commit | 82e03978b89938219958032efb1448cc76baa181 (patch) | |
| tree | 626f3e54d52ecd49be0ed3bee30abacc0453d081 /src/quote/public | |
Initial snapshot - OpenTelemetry demo 2.1.3 -f
Diffstat (limited to 'src/quote/public')
| -rw-r--r-- | src/quote/public/index.php | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/src/quote/public/index.php b/src/quote/public/index.php new file mode 100644 index 0000000..fd02e5b --- /dev/null +++ b/src/quote/public/index.php @@ -0,0 +1,94 @@ +<?php +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + + + +declare(strict_types=1); + +use DI\Bridge\Slim\Bridge; +use DI\ContainerBuilder; +use OpenTelemetry\API\Globals; +use OpenTelemetry\SDK\Common\Configuration\Configuration; +use OpenTelemetry\SDK\Common\Configuration\Variables; +use OpenTelemetry\SDK\Logs\LoggerProviderInterface; +use OpenTelemetry\SDK\Metrics\MeterProviderInterface; +use OpenTelemetry\SDK\Trace\TracerProviderInterface; +use Psr\Http\Message\ServerRequestInterface; +use React\EventLoop\Loop; +use React\Http\HttpServer; +use React\Socket\SocketServer; +use Slim\Factory\AppFactory; + +require __DIR__ . '/../vendor/autoload.php'; + +// Instantiate PHP-DI ContainerBuilder +$containerBuilder = new ContainerBuilder(); + +// Set up settings +$settings = require __DIR__ . '/../app/settings.php'; +$settings($containerBuilder); + +// Set up dependencies +$dependencies = require __DIR__ . '/../app/dependencies.php'; +$dependencies($containerBuilder); + +// Build PHP-DI Container instance +$container = $containerBuilder->build(); + +// Instantiate the app +AppFactory::setContainer($container); +$app = Bridge::create($container); + +// Register middleware +$app->addRoutingMiddleware(); + +// Register routes +$routes = require __DIR__ . '/../app/routes.php'; +$routes($app); + +// Add Body Parsing Middleware +$app->addBodyParsingMiddleware(); + +// Add Error Middleware +$errorMiddleware = $app->addErrorMiddleware(true, true, true); +Loop::get()->addSignal(SIGTERM, function() { + exit; +}); + +/* workaround for non-async batch processors */ +if (($tracerProvider = Globals::tracerProvider()) instanceof TracerProviderInterface) { + Loop::addPeriodicTimer(Configuration::getInt(Variables::OTEL_BSP_SCHEDULE_DELAY)/1000, function() use ($tracerProvider) { + $tracerProvider->forceFlush(); + }); +} +if (($loggerProvider = Globals::loggerProvider()) instanceof LoggerProviderInterface) { + Loop::addPeriodicTimer(Configuration::getInt(Variables::OTEL_BLRP_SCHEDULE_DELAY)/1000, function() use ($loggerProvider) { + $loggerProvider->forceFlush(); + }); +} +if (($meterProvider = Globals::meterProvider()) instanceof MeterProviderInterface) { + Loop::addPeriodicTimer(Configuration::getInt(Variables::OTEL_METRIC_EXPORT_INTERVAL)/1000, function() use ($meterProvider) { + $meterProvider->forceFlush(); + }); +} + +$server = new HttpServer(function (ServerRequestInterface $request) use ($app) { + $response = $app->handle($request); + echo sprintf('[%s] "%s %s HTTP/%s" %d %d %s', + date('Y-m-d H:i:sP'), + $request->getMethod(), + $request->getUri()->getPath(), + $request->getProtocolVersion(), + $response->getStatusCode(), + $response->getBody()->getSize(), + PHP_EOL, + ); + + return $response; +}); +$address = '0.0.0.0:' . getenv('QUOTE_PORT'); +$socket = new SocketServer($address); +$server->listen($socket); + +echo "Listening on: {$address}" . PHP_EOL; |
