Symfony HttpClient访问不存在URL时超时设置未生效求助
Symfony HttpClient 超时参数调整方案
当请求不存在的链接时,仅设置timeout和max_duration无法生效,核心原因是DNS解析和TCP连接阶段的超时未被限制,默认的DNS解析超时通常为5秒左右,会直接导致总请求时长超出预期。
需要补充以下两个关键参数:
dns_timeout:限制DNS域名解析的最长耗时(单位:秒)connect_timeout:限制与目标服务器建立TCP连接的最长耗时(单位:秒)
修改后的代码如下:
$response = $this->request('POST', $requestUrl, [ 'json' => [ "client_id" => "administration", "grant_type"=>"password", "username"=>$shop->getUsername(), "password"=>$shop->getPassword(), "scope" => "user-verified" ], 'max_duration' => 2, 'timeout' => 2, 'dns_timeout' => 2, 'connect_timeout' => 2 ] );
参数说明:
max_duration:整个请求生命周期的总超时(包含DNS解析、连接、数据传输所有阶段)timeout:请求建立后,单次数据传输的超时时间dns_timeout:专门控制DNS解析阶段的超时,避免因无效域名解析拖慢整体请求connect_timeout:控制TCP连接建立阶段的超时,确保连接环节也受时间限制
内容的提问来源于stack exchange,提问作者Claudio Ferraro
相关产品推荐
相关产品推荐

