一个基本的AWS X-Ray PHP性能分析库

v1.4.0 2022-01-09 12:20 UTC

This package is auto-updated.

Last update: 2024-09-06 23:36:25 UTC


README

Build Status Maintainability Test Coverage PHP >=7.1 Packagist

pkerrigan\xray

一个基本的AWS X-Ray PHP性能分析库

在亚马逊发布官方PHP SDK for AWS X-Ray之前,此库允许您为PHP应用程序添加基本性能分析,并通过AWS X-Ray守护进程报告跟踪。

请注意,没有提供对流行库的自动性能分析。为了对SQL查询、HTTP请求和其他服务进行性能分析,您需要创建自己的包装器,以适当的方式启动和结束跟踪段。

安装

推荐使用Composer安装此库

$ composer require pkerrigan/xray ^1

使用方法

开始跟踪

Trace 类表示AWS X-Ray跟踪的最高级别,可以作为单例在代码的任何地方轻松访问,包括在框架和依赖注入器初始化之前。

您应该在请求的早期开始跟踪

use Pkerrigan\Xray\Trace;

Trace::getInstance()
    ->setTraceHeader($_SERVER['HTTP_X_AMZN_TRACE_ID'] ?? null)
    ->setName('app.example.com')
    ->setUrl($_SERVER['REQUEST_URI'])
    ->setMethod($_SERVER['REQUEST_METHOD'])
    ->begin(); 

向跟踪中添加段

您可以根据需要向跟踪中添加任意数量的段,包括嵌套段。要将SQL查询添加到跟踪中,您将执行以下操作

Trace::getInstance()
    ->getCurrentSegment()
    ->addSubsegment(
        (new SqlSegment())
            ->setName('db.example.com')
            ->setDatabaseType('PostgreSQL')
            ->setQuery($mySanitisedQuery)    // Make sure to remove sensitive data before passing in a query
            ->begin()    
    );
    
    
// Run your query here
    
Trace::getInstance()
    ->getCurrentSegment()
    ->end();
    

getCurrentSegment() 方法始终返回最近打开的段,允许您根据需要嵌套到足够的深度。

结束跟踪

在请求结束时,您将想要结束并提交您的跟踪。默认情况下,只支持通过AWS X-Ray守护进程提交。

Trace::getInstance()
    ->end()
    ->setResponseCode(http_response_code())
    ->submit(new DaemonSegmentSubmitter());

尚未实现的功能

  • 异常和堆栈跟踪支持
  • 提交不完整的段