Skip to content

Commit bae5940

Browse files
feat: add server timing header for controller time execution
1 parent 2496c6a commit bae5940

2 files changed

Lines changed: 33 additions & 0 deletions

File tree

‎ProcessMaker/Http/Kernel.php‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace ProcessMaker\Http;
44

55
use Illuminate\Foundation\Http\Kernel as HttpKernel;
6+
use ProcessMaker\Http\Middleware\ServerTimingMiddleware;
67

78
class Kernel extends HttpKernel
89
{
@@ -20,6 +21,7 @@ class Kernel extends HttpKernel
2021
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
2122
Middleware\TrustProxies::class,
2223
Middleware\BrowserCache::class,
24+
ServerTimingMiddleware::class,
2325
];
2426

2527
/**
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
3+
namespace ProcessMaker\Http\Middleware;
4+
5+
use Closure;
6+
use Illuminate\Http\Request;
7+
use Symfony\Component\HttpFoundation\Response;
8+
9+
class ServerTimingMiddleware
10+
{
11+
/**
12+
* Handle an incoming request.
13+
*
14+
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
15+
*/
16+
public function handle(Request $request, Closure $next): Response
17+
{
18+
$start = microtime(true);
19+
20+
// Process the request
21+
$response = $next($request);
22+
23+
// Calculate elapsed time
24+
$duration = (microtime(true) - $start) * 1000; // Convert to milliseconds
25+
26+
// Add Server-Timing header
27+
$response->headers->set('Server-Timing', "controller;dur={$duration}");
28+
29+
return $response;
30+
}
31+
}

0 commit comments

Comments
 (0)