承接 upscale/swoole-newrelic 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

upscale/swoole-newrelic

最新稳定版本:1.6.0

Composer 安装命令:

composer require upscale/swoole-newrelic

包简介

New Relic APM monitoring of Swoole web-server

README 文档

README

This library enables monitoring of PHP applications powered by Swoole web-server via New Relic products.

Features:

  • New Relic APM integration
  • New Relic Browser integration

Demo

New Relic APM dashboard

Installation

The library is to be installed via Composer as a dependency:

composer require upscale/swoole-newrelic

Usage

Production

Monitoring of requests from start to finish can be activated by adding a few lines of code to the server entry point. The monitoring instrumentation is by design completely transparent to an application running on the server.

Install the monitoring instrumentation for all requests:

use Upscale\Swoole\Newrelic;

$page = <<<HTML
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Example page</title>
</head>
<body>
    Served by Swoole server
</body>
</html>

HTML;

$server = new \Swoole\Http\Server('127.0.0.1', 8080);
$server->on('request', function ($request, $response) use ($page) {
    // PHP processing within request boundary...
    usleep(1000 * rand(100, 300));
    
    // Send response
    $response->end($page);
    
    // PHP processing outside of request boundary...
    usleep(1000 * rand(50, 150));
});

// Real user monitoring (RUM)
$rum = new Newrelic\Browser(new Newrelic\Browser\TransactionFactory());
$rum->instrument($server);

// Application performnce monitoring (APM)
$apm = new Newrelic\Apm(new Newrelic\Apm\TransactionFactory());
$apm->instrument($server);

unset($rum, $apm);

$server->start();

APM can be standalone or used in conjunction with the real user monitoring. RUM must be instrumented first.

Browser instrumentation is applied to non-AJAX requests having text/html response MIME type (the default).

Development

Having to install the New Relic PHP extension locally may be inconvenient and outright undesirable for developers. The workaround is to replace the New Relic reporting functionality with the "stub" implementation doing nothing:

{
    "require": {
        "upscale/swoole-newrelic": "^1.0",
        "killmails/polyfill-newrelic": "^1.0"
    },
    "replace": {
        "ext-newrelic": "*"
    }
}

The PHP extension is used when installed and substituted with the polyfill otherwise.

Limitations

Concurrent requests subject to coroutine multi-tasking are reported as part of the first in-flight transaction.

Contributing

Pull Requests with fixes and improvements are welcome!

License

Copyright © Upscale Software. All rights reserved.

Licensed under the Apache License, Version 2.0.

统计信息

  • 总下载量: 19.39k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 16
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 16
  • Watchers: 3
  • Forks: 5
  • 开发语言: PHP

其他信息

  • 授权协议: Apache-2.0
  • 更新时间: 2019-05-23