我想配置一个小的超时之间我的elasticsearch php客户端到我的elasticsearch服务器.
我试着传递一些参数到guzzle客户端,但它似乎这不工作.这里是代码:
$params = array();
$params['hosts'] = $hosts;
$params['guzzleOptions']['connect_timeout'] = 2.0;
$params['guzzleOptions']['timeout'] = 2.0;
$this->elastica_obj = new Elasticsearch\Client($params);
我搜索并发现问题可能发生,因为超时设置在cURL层(低于guzzle)(Limit connecting time with Guzzle HTTP PHP client)
我想我需要以某种方式设置CURLOPT_CONNECTTIMEOUT_MS参数为我想要的值(2000ms),但我没有看到任何好的方法来通过elasticsearch php客户端传递它.
有人知道怎么做吗?
5条答案
按热度按时间0qx6xfy61#
从
elasticsearch/elasticsearch
v5.1.2开始,您还可以使用适用于所有请求的setConnectionParams()
方法deyfvvtc2#
谢谢扎克,我试过了,但它不工作。
我调试了客户端以及参数从gouzzle传递到curl句柄的方式。
我发现完成它的方法是将此参数传递给Elasticsearch客户端
希望它是有帮助的:)
尼夫
o4hqfura3#
对于最新的2.x版本,它是以不同的方式完成的。
在ES-PHP 2.x中,超时现在是针对每个请求指定的。https://www.elastic.co/guide/en/elasticsearch/client/php-api/2.0/_per_request_configuration.html#_curl_timeouts
但是,在全球范围内是不可能做到的。请跟随this issue获取更新。
wr98u20j4#
假设您指的是Elasticsearch-PHP客户端(而不是Elastica):
guzzleOptions
参数接受任何Guzzle参数,并遵循Guzzle使用的相同数组语法。这将对通过客户端发送的所有请求应用2s超时
有一个“快捷方式”
timeout
参数应该适用于所有连接类型(Guzzle、CurlMultiConnection等)......但我现在正在浏览代码,我认为它实际上不适用于Guzzle。vwhgwdsa5#
在我的php弹性版本中,解决方案是
也许有人会有用=)