以下是一个PHP代码示例,演示如何实现百度文心一言API接口的请求超时和重试机制:
<?php
function requestWithRetry($url, $timeout, $retryCount) {
$retry = 0;
$response = null;
while ($retry < $retryCount) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpCode === 200) {
break;
}
$retry++;
curl_close($ch);
}
return $response;
}
// 设置API接口的URL
$url = 'http://api.lwl12.com/hitokoto/main/get';
// 设置超时时间(单位:秒)
$timeout = 5;
// 设置重试次数
$retryCount = 3;
// 发起请求
$response = requestWithRetry($url, $timeout, $retryCount);
// 处理响应
if ($response) {
// 解析JSON响应
$data = json_decode($response, true);
// 打印一言内容
echo $data['hitokoto'];
} else {
echo '请求超时或达到重试次数';
}
在上述代码中,requestWithRetry
函数用于发起带有重试机制的请求。它使用curl_init
初始化一个CURL会话,并使用curl_setopt
设置一些选项,如CURLOPT_RETURNTRANSFER
用于返回响应结果,CURLOPT_TIMEOUT
用于设置超时时间。
在每次请求失败后,代码会递增$retry
变量,并使用curl_close
关闭CURL会话。然后,循环会继续进行,直到达到重试次数或成功获取到响应。
最后,解析JSON响应并打印出一言内容。如果请求超时或达到重试次数,则会输出相应的错误信息。
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站