gpt4 book ai didi

php - 使用 GuzzleHTTP 时如何检查端点是否正常工作

转载 作者:搜寻专家 更新时间:2023-10-31 21:52:38 25 4
gpt4 key购买 nike

所以我正在使用 guzzleHttp,我可以获得我想要的响应并捕获错误。

我遇到的唯一问题是,如果基本 URI 错误,整个脚本就会失败...我如何进行某种检查以确保端点确实已启动?

$client = new GuzzleHttp\Client(['base_uri' => $url]);

最佳答案

您的查询可能有很多问题,不仅仅是端点已关闭。服务器上的网络接口(interface)可能会在查询时出现故障、DNS 可能会出现故障、到主机的路由可能不可用、连接超时等。

因此,您绝对应该为许多问题做好准备。我通常会捕获一般的 RequestException 并做一些事情(日志记录、特定于应用程序的处理),如果我应该以不同的方式处理它们,还会捕获特定的异常。

此外,还有许多现有的错误处理模式(和解决方案)。例如,通常在端点不可用时重试查询。

$stack = HandlerStack::create();
$stack->push(Middleware::retry(
function (
$retries,
RequestInterface $request,
ResponseInterface $response = null,
RequestException $exception = null
) {
// Don't retry if we have run out of retries.
if ($retries >= 5) {
return false;
}

$shouldRetry = false;
// Retry connection exceptions.
if ($exception instanceof ConnectException) {
$shouldRetry = true;
}
if ($response) {
// Retry on server errors.
if ($response->getStatusCode() >= 500) {
$shouldRetry = true;
}
}

// Log if we are retrying.
if ($shouldRetry) {
$this->logger->debug(
sprintf(
'Retrying %s %s %s/5, %s',
$request->getMethod(),
$request->getUri(),
$retries + 1,
$response ? 'status code: ' . $response->getStatusCode() :
$exception->getMessage()
)
);
}

return $shouldRetry;
}
));

$client = new Client([
'handler' => $stack,
'connect_timeout' => 60.0, // Seconds.
'timeout' => 1800.0, // Seconds.
]);

关于php - 使用 GuzzleHTTP 时如何检查端点是否正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38614534/

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