Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置elasticsearch php客户端的连接超时_Php_Curl_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Guzzle - Fatal编程技术网 elasticsearch,guzzle,Php,Curl,elasticsearch,Guzzle" /> elasticsearch,guzzle,Php,Curl,elasticsearch,Guzzle" />

设置elasticsearch php客户端的连接超时

设置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

我想在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) ()

我想我需要以某种方式将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: