matchory / laravel-server-timing
在您的Laravel应用程序中添加Server-Timing头部信息。
Requires
- php: ^8.2
- illuminate/support: ^9.0|^10.0|^11.0
- symfony/stopwatch: ^5.0|^6.2|^v7.1
Requires (Dev)
- laravel/octane: ^2.4.0
- orchestra/testbench: ^v9.1.2
- phpstan/phpstan: ^1.11.5
- phpunit/phpunit: ^11.1
- roave/security-advisories: dev-latest
README
在您的Laravel应用程序中添加Server-Timing头部信息。
安装
您可以通过Composer安装此包
composer require matchory/laravel-server-timing
使用方法
要添加server-timing头部信息,您需要将\Matchory\ServerTiming\Middleware\ServerTimingMiddleware::class,
中间件添加到您的HTTP内核中。为了获得最准确的结果,请将中间件设置为中间件堆栈中首先加载的中间件。
默认情况下,中间件仅测量三件事情,以尽可能保持轻量级
- 引导(中间件被调用之前的时间)
- 应用时间(获取响应所需的时间)
- 总时间(发送响应之前的时间)
一旦包成功安装,您可以在浏览器的开发者工具中查看您的定时信息。以下是一个来自Chrome的示例:
启用自动数据库定时
要启用数据库定时,您有两个内置选项可以在配置文件中启用
measure_database
: 测量总数据库定时。这将跟踪数据库查询所花费的总时间。measure_queries
: 测量每个查询的数据库定时。这将跟踪每个单独查询所花费的时间,并将它们作为单独的度量添加。
注意:如果您有很多查询,这可能会导致头部非常大。一些Web服务器,如nginx,如果头部过大则会放弃。请查看您的Web服务器的手册,如有必要,调整这些限制。
添加额外的测量
如果您想提供额外的测量,您可以使用开始和停止方法。如果您没有明确停止一个测量的事件,那么一旦中间件收到您的响应,该事件将自动停止。如果您想测量Blade视图编译所需的时间,这非常有用。
ServerTiming::start('Running expensive task'); // do something ServerTiming::stop('Running expensive task');
如果您已知要设置的精确时间,您可以使用setDuration
方法。持续时间应以毫秒为单位设置
ServerTiming::setDuration('Running expensive task', 1_200);
除了提供毫秒作为持续时间之外,您还可以传递一个将被测量的可调用对象
ServerTiming::setDuration('Running expensive task', function() { sleep(5); });
添加文本信息
您还可以使用Server-Timing中间件仅设置文本信息,而不提供持续时间。
发布配置文件
可以使用以下命令发布配置文件:php artisan vendor:publish --tag=server-timing-config
您可以通过将timing.enabled
配置更改为false来禁用中间件。
ServerTiming::addMetric("User: {$user->id}");
变更日志
有关最近更改的更多信息,请参阅CHANGELOG
贡献
有关详细信息,请参阅CONTRIBUTING
测试
要运行单元测试,请使用以下命令
composer test
您还可以使用以下命令运行类型检查
composer analyze
安全性
如果您发现任何与安全相关的问题,请通过电子邮件marcel@beyondco.de联系,而不是使用问题跟踪器。
致谢
许可协议
MIT许可协议(MIT)。有关更多信息,请参阅许可文件。