gpt4 book ai didi

php - PHP 中的 ElasticSearch\Client 使用 MultiCurl

转载 作者:行者123 更新时间:2023-12-02 23:04:33 25 4
gpt4 key购买 nike

在分析我使用 ElasticSearch PHP 客户端的产品时,我注意到它在执行请求时 native 使用来自 Guzzle 的 CurlMulti 适配器。

这似乎会导致大量开销,并且比较此客户端和我自己的 cURL 下载器之间的时间显示 ES\Client 几乎慢了 10 倍。看起来它纯粹与使用multi有关。

如何更新适配器以使用内联 curl 请求?

我似乎无法在文档中找到让我更改此设置的部分。

最佳答案

抱歉,目前没有很好的文档记录。您的基准是准确的 - Guzzle 的使用引入了相当大的开销。开销实际上是由于各种 Guzzle 类的自动加载成本。您可以将 Guzzle Connection 替换为 CurlMultiConnection 类,这是一个轻量级的替代品。

您可以通过以下方式启用它:

$params['connectionClass'] = '\Elasticsearch\Connections\CurlMultiConnection';
$client = new Client($params);

使用这种语法,您还可以编写自己的替换 Connection 类。只需关注 ConnectionInterface界面。

Based on my benchmarks (诚​​然,此时已经相当老了):

Guzzle
  • 无网络:7.095 毫秒
  • 网络 Ping:15.856 毫秒

  • curl 多连接
  • 无网络:4.345 毫秒
  • 网络 Ping:7.122 毫秒

  • 根据分析,速度差异几乎完全是自动加载。加载后,两个 Connection 类以相同的吞吐量执行网络操作。与 APC 或 HHVM 一起使用时,两个 Connection 类的执行速度显着提高。

    关于php - PHP 中的 ElasticSearch\Client 使用 MultiCurl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22616618/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com