lukewaite/ringphp-guzzle-handler

v2.2.0 2021-04-23 17:01 UTC

This package is auto-updated.

Last update: 2024-09-24 00:50:08 UTC


README

Latest Version on Packagist Software License Build Status Coveralls Total Downloads

使用说明

安装

该软件包可以使用 composer 进行安装。

$ composer require lukewaite/ringphp-guzzle-handler

Elasticsearch

$guzzleHandler  = new LukeWaite\RingPhpGuzzleHandler\GuzzleHandler();

$client = Elasticsearch\ClientBuilder::create()
            ->setHandler($guzzleHandler)
            ->build();

可选地,您可以手动创建一个 Guzzle 客户端,并通过构造函数传递它

$guzzle = new GuzzleHttp\Client();
$guzzleHandler  = new LukeWaite\RingPhpGuzzleHandler\GuzzleHandler($guzzle);

$client = Elasticsearch\ClientBuilder::create()
            ->setHandler($guzzleHandler)
            ->build();

你做了什么?

我构建了一个RingPHP处理器,它使用 Guzzle 作为传输。

你做了什么,伙计?

是的 - 我为 RingPHP(一个较旧的 GuzzleHttp 项目)构建了一个处理器,该处理器使用 Guzzle 6 作为传输。

原因

ElasticSearch PHP SDK 在底层使用 RingPHP 客户端库。您可以在创建客户端时提供一个 Handler,但它必须是 RingPHP 处理器。

NewRelic 支持 Guzzle 的外部请求跟踪,但不支持 RingPHP。使用此处理器意味着我们可以对我们的事务获得更精确的度量。

部署前后的 NewRelic APM 图表示例

newrelic before and after

这对 RingPHP 的忠实度如何?

实现处理器的规范遵循了,但在某些情况下,我不得不对 ElasticSearch PHP SDK 进行一些调整。

$response body

您应该能够返回许多不同类型的内容,但 ElasticSearch 期望它只是一个流,所以我们返回它。

$response transfer_stats

传输统计信息应该是处理器提供的任意数组,但结果表明 ElasticSearch 期望在默认 CURL 处理器中包含一些非常具体的内容。