fetzi / server-timing
server-timing是一个包含用于将Server-Timing信息添加到响应中的中间件的包
Requires
- php: ^7.2
- psr/http-server-middleware: ^1.0
Requires (Dev)
- phpunit/phpunit: ^8.5
- squizlabs/php_codesniffer: ^3.5
This package is auto-updated.
Last update: 2024-09-22 02:08:45 UTC
README
server-timing是一个PHP中间件包,它可以将Server-Timing
头添加到您的响应中。这些信息可以在您的网页浏览器中查看,例如在Google Chrome中。
有关ServerTiming
响应头的更多信息,可以在MDN文档中找到。
该包自动添加两个默认度量标准,但您也可以添加自定义度量标准。
安装
composer require fetzi/server-timing
设置
该包自动在中间件实现中测量两个计时值
Bootstrap
:应用程序引导阶段所花费的时间Request
:请求处理程序(s)处理请求所需的总时间
为了确保所有计时尽可能精确,需要在请求处理程序堆栈的最外层(最后一个)位置添加中间件。
PSR-15 中间件
要启用中间件,只需将Fetzi\ServerTiming\ServerTimingMiddleware
实例添加到您的中间件堆栈中即可。
在Slim应用程序中,您可以通过将以下内容添加到中间件堆栈代码中来实现:
$app->add(new ServerTimingMiddleware($container->get(ServerTimings::class)));
到您的中间件堆栈代码。
Laravel 中间件
要在您的Laravel应用程序中启用中间件,您需要使用Fetzi\ServerTiming\Laravel\ServerTimingMiddleware
类。
如果您想一般性地启用中间件,只需将类定义添加到Kernel
类中的$middleware
数组中。如果您只想在满足条件时启用中间件,则需要覆盖Kernel
中的handle
方法,如此处所示。
用法
要能够添加您自己的自定义服务器计时,您需要确保将ServerTimings
类注册为单例到您的依赖注入容器中。这允许您将ServerTimings
类注入到任何其他类中,并创建和测量自定义服务器计时。
function fetchUsers() { $fetchUsers = $this->serverTimings->create('fetchUsers'); $fetchUsers->start(); $users = $this->db->getUsers(); $fetchUsers->stop(); return $users; }
此代码将生成一个名为fetchUsers
的新服务器计时,并通过调用start
和stop
方法来测量执行时间。
创建ServerTiming实例
ServerTimings
类提供了一个create
方法来创建一个自动注册并会被中间件发送回的ServerTiming
实例。
// create a ServerTiming with a name $serverTiming = $serverTimings->create('foo'); // create a ServerTiming with a name and a description $serverTiming = $serverTimings->create('foo', 'bar');
测量ServerTiming
ServerTiming
实例提供了两个用于开始和停止测量的方法。
// normal usage $serverTiming->start(); // ... $serverTiming->stop(); // set a manual start value (a microtime value as float) $serverTiming->start(1000000.00); // ... $serverTiming->stop();
中间件将确保收集所有测量的ServerTiming实例,并将它们的值附加到Server-Timing
响应头中。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。