From eff830a38e5527a1bd9bca7eddde6d5a76bc92be Mon Sep 17 00:00:00 2001 From: David Callizaya Date: Thu, 2 Jan 2025 21:03:52 -0400 Subject: [PATCH 1/3] Add boot timing to Server-Timing header --- ProcessMaker/Http/Middleware/ServerTimingMiddleware.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ProcessMaker/Http/Middleware/ServerTimingMiddleware.php b/ProcessMaker/Http/Middleware/ServerTimingMiddleware.php index 3638bd9ec0..4bbfb361a5 100644 --- a/ProcessMaker/Http/Middleware/ServerTimingMiddleware.php +++ b/ProcessMaker/Http/Middleware/ServerTimingMiddleware.php @@ -29,6 +29,7 @@ public function handle(Request $request, Closure $next): Response // Start time for controller execution $startController = microtime(true); + $bootTiming = ($startController - LARAVEL_START) * 1000; // Convert to ms // Process the request $response = $next($request); @@ -41,6 +42,7 @@ public function handle(Request $request, Closure $next): Response $queryTime = ProcessMakerServiceProvider::getQueryTime() ?? 0; $serverTiming = [ + "boot;dur={$bootTiming}", "provider;dur={$serviceProviderTime}", "controller;dur={$controllerTime}", "db;dur={$queryTime}", From 03409b8d3c8190826590856d68140864b1a1e160 Mon Sep 17 00:00:00 2001 From: David Callizaya Date: Fri, 3 Jan 2025 10:55:04 -0400 Subject: [PATCH 2/3] Fix missing namespace for the constant LARAVEL_START --- ProcessMaker/Http/Middleware/ServerTimingMiddleware.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ProcessMaker/Http/Middleware/ServerTimingMiddleware.php b/ProcessMaker/Http/Middleware/ServerTimingMiddleware.php index 4bbfb361a5..b2d275e114 100644 --- a/ProcessMaker/Http/Middleware/ServerTimingMiddleware.php +++ b/ProcessMaker/Http/Middleware/ServerTimingMiddleware.php @@ -29,7 +29,7 @@ public function handle(Request $request, Closure $next): Response // Start time for controller execution $startController = microtime(true); - $bootTiming = ($startController - LARAVEL_START) * 1000; // Convert to ms + $bootTiming = ($startController - \LARAVEL_START) * 1000; // Convert to ms // Process the request $response = $next($request); From 37875e8aa4670d3f9ebcdf5cc2a277f04478692d Mon Sep 17 00:00:00 2001 From: David Callizaya Date: Fri, 3 Jan 2025 22:46:55 -0400 Subject: [PATCH 3/3] Conditionally calculate boot timing if LARAVEL_START is defined --- ProcessMaker/Http/Middleware/ServerTimingMiddleware.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ProcessMaker/Http/Middleware/ServerTimingMiddleware.php b/ProcessMaker/Http/Middleware/ServerTimingMiddleware.php index b2d275e114..98329c4e13 100644 --- a/ProcessMaker/Http/Middleware/ServerTimingMiddleware.php +++ b/ProcessMaker/Http/Middleware/ServerTimingMiddleware.php @@ -29,7 +29,6 @@ public function handle(Request $request, Closure $next): Response // Start time for controller execution $startController = microtime(true); - $bootTiming = ($startController - \LARAVEL_START) * 1000; // Convert to ms // Process the request $response = $next($request); @@ -42,12 +41,17 @@ public function handle(Request $request, Closure $next): Response $queryTime = ProcessMakerServiceProvider::getQueryTime() ?? 0; $serverTiming = [ - "boot;dur={$bootTiming}", "provider;dur={$serviceProviderTime}", "controller;dur={$controllerTime}", "db;dur={$queryTime}", ]; + $hasLaravelStart = defined('LARAVEL_START'); + if ($hasLaravelStart) { + $bootTiming = ($startController - \LARAVEL_START) * 1000; // Convert to ms + array_unshift($serverTiming, "boot;dur={$bootTiming}"); + } + $packageTimes = ProcessMakerServiceProvider::getPackageBootTiming(); foreach ($packageTimes as $package => $timing) {