lukewaite / ringphp-guzzle-handler
v2.2.0
2021-04-23 17:01 UTC
Requires
- php: >=7.0
- guzzlehttp/guzzle: ^6.2
- guzzlehttp/psr7: ^1.4
- guzzlehttp/ringphp: ^1.1
Requires (Dev)
- php-coveralls/php-coveralls: ^2.1
- phpunit/phpunit: ^5.7.11||^6.0||^7.0
README
使用说明
安装
该软件包可以使用 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 图表示例
这对 RingPHP 的忠实度如何?
实现处理器的规范遵循了,但在某些情况下,我不得不对 ElasticSearch PHP SDK 进行一些调整。
$response body
您应该能够返回许多不同类型的内容,但 ElasticSearch 期望它只是一个流,所以我们返回它。
$response transfer_stats
传输统计信息应该是处理器提供的任意数组,但结果表明 ElasticSearch 期望在默认 CURL 处理器中包含一些非常具体的内容。