manghe/app/api/middleware/ResponseTimeMiddleware.php
2025-04-19 01:07:39 +08:00

42 lines
948 B
PHP

<?php
declare (strict_types = 1);
namespace app\api\middleware;
use Closure;
use think\Request;
use think\Response;
/**
* 响应时间中间件
* 计算接口耗时并将其添加到响应头中
*/
class ResponseTimeMiddleware
{
/**
* 处理请求
*
* @param Request $request
* @param Closure $next
* @return Response
*/
public function handle(Request $request, Closure $next)
{
// 记录开始时间(微秒)
$startTime = microtime(true);
// 执行请求
$response = $next($request);
// 计算耗时(毫秒)
$endTime = microtime(true);
$executionTime = round(($endTime - $startTime) * 1000, 2);
// 将耗时添加到响应头
if ($response instanceof Response) {
$response->header(['X-Response-Time' => $executionTime . 'ms']);
}
return $response;
}
}