设置elasticsearch php客户端的连接超时
我想在elasticsearch php客户端和我的elasticsearch服务器之间配置一个小的超时 我试图将一些参数传递给guzzle客户端,但似乎这不起作用。 代码如下:设置elasticsearch php客户端的连接超时,php,curl,
elasticsearch,guzzle,Php,Curl,
elasticsearch,Guzzle,我想在elasticsearch php客户端和我的elasticsearch服务器之间配置一个小的超时 我试图将一些参数传递给guzzle客户端,但似乎这不起作用。 代码如下: $params = array(); $params['hosts'] = $hosts; $params['guzzleOptions']['connect_timeout'] = 2.0; $params['guzzleOptions']['timeout'] = 2.0; $this->elastica_o
$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)
()
我想我需要以某种方式将CURLOPT_CONNECTTIMEOUT_MS参数设置为我想要的值(2000ms),但我看不到通过elasticsearch php客户端传递它的任何好方法
有人知道怎么做吗?假设您指的是Elasticsearch PHP客户端(而不是Elastica):
Guzzle选项
参数接受任何Guzzle参数,并遵循Guzzle使用的相同数组语法。所以你需要做:
$params = array();
$params['hosts'] = $hosts;
$params['guzzleOptions']['command.request_options']['connect_timeout'] = 2.0;
$params['guzzleOptions']['command.request_options']['timeout'] = 2.0;
$this->elastica_obj = new Elasticsearch\Client($params);
这将对通过客户端发送的所有请求应用2s超时
有一个“快捷方式”
timeout
参数应该应用于所有连接类型(Guzzle、CurlMultiConnection等)…但是我现在正在查看代码,我认为它实际上不适用于Guzzle。我会开一张罚单。假设您指的是Elasticsearch PHP客户端(而不是Elastica):
Guzzle选项
参数接受任何Guzzle参数,并遵循Guzzle使用的相同数组语法。所以你需要做:
$params = array();
$params['hosts'] = $hosts;
$params['guzzleOptions']['command.request_options']['connect_timeout'] = 2.0;
$params['guzzleOptions']['command.request_options']['timeout'] = 2.0;
$this->elastica_obj = new Elasticsearch\Client($params);
这将对通过客户端发送的所有请求应用2s超时
有一个“快捷方式”timeout
参数应该应用于所有连接类型(Guzzle、CurlMultiConnection等)…但是我现在正在查看代码,我认为它实际上不适用于Guzzle。我要开一张票。谢谢扎克,
我试过了,但没用
我调试了客户端以及参数从guzzle传递到curl句柄的方式
我发现实现它的方法是将此参数传递给Elasticsearch客户端
$params['guzzleOptions']['curl.options'][CURLOPT_CONNECTTIMEOUT] = 2.0; // this applies 2 seconds connection_timeout
希望有帮助:)
Niv谢谢扎克,
我试过了,但没用
我调试了客户端以及参数从guzzle传递到curl句柄的方式
我发现实现它的方法是将此参数传递给Elasticsearch客户端
$params['guzzleOptions']['curl.options'][CURLOPT_CONNECTTIMEOUT] = 2.0; // this applies 2 seconds connection_timeout
希望有帮助:)
Niv对于最新版本2.x,它是以不同的方式完成的。引用: 在ES-PHP2.x中,现在为每个请求指定超时。请参阅此处的文档:
尽管如此,在全球层面上这样做是不可能的。跟踪更新。对于最新版本2.x,它是以不同的方式完成的。引用: 在ES-PHP2.x中,现在为每个请求指定超时。请参阅此处的文档:
尽管如此,在全球层面上这样做是不可能的。请按以下步骤进行更新。更新的文档链接on:更新的文档链接on: