当前位置: 首页 > news >正文

做网站服务销售免费b2b网站推广渠道

做网站服务销售,免费b2b网站推广渠道,适合权重小的网站做的专题,wordpress 页码背景 开发过程中,跟外部接口对接时,很常见的要考虑到失败重新的情况,这里记录一下我用的失败重试的情况, 重试方法 1、使用 Laravel 的 HTTP 客户端和异常处理 结合异常处理和重试逻辑 use Illuminate\Support\Facades\Http;…

背景

开发过程中,跟外部接口对接时,很常见的要考虑到失败重新的情况,这里记录一下我用的失败重试的情况,

重试方法

1、使用 Laravel 的 HTTP 客户端和异常处理

结合异常处理和重试逻辑

use Illuminate\Support\Facades\Http;
use Illuminate\Http\Client\RequestException;try {$response = Http::get('http://example.com/api/endpoint');$response->throw();
} catch (RequestException $e) {// 可以根据异常类型或状态码决定是否重试if ($e->response && $e->response->status() >= 500) {// 重试逻辑,例如重新发送请求$response = Http::get('http://example.com/api/endpoint');}
}
2、Guzzle 及其重试中间件

文档地址:https://docs.guzzlephp.org/en/stable/quickstart.html#creating-a-client

Guzzle 是一个广泛使用的 HTTP 客户端,并且有相应的重试中间件可以实现请求失败的重试。

2.1安装扩展
composer require guzzlehttp/guzzle
2.2失败重试逻辑
use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Handler\CurlHandler;
use GuzzleHttp\Middleware;
use GuzzleHttp\Psr7\Response;class YourHttpClientClass {// 自定义的重试决策函数public static function retryDecider() {return function ($retries, $request, $response = null, $exception = null) {if ($retries >= 3) {return false;}if ($exception instanceof \GuzzleHttp\Exception\ConnectException) {return true;}if ($response) {// 如果请求有响应,这里根据自己的业务而定,是否继续重试$res_content = $response->getBody()->getContents();$res = json_decode($res_content, true);if (isset($res['error'])) { // 如果不存在status ,更新access_token,再次请求info('接口请求结果: '. json_encode($res) . '需要刷新access_token重新请求');self::getProAccessToken($refresh = true);return true;}}return false;};}// 自定义的重试延迟函数public static function retryDelay() {return function ($numberOfRetries) {return 1000 * $numberOfRetries; // 延迟 1 秒,重试次数越多延迟越长};}public function createClient() {// 创建处理栈并使用 CurlHandler$handlerStack = HandlerStack::create(new CurlHandler());// 创建 mapResponse 中间件$mapResponse = Middleware::mapResponse(function (Response $response) {$response->getBody()->rewind();return $response;});// 创建重试中间件,指定决策者为 retryDecider(),指定重试延迟为 retryDelay()$handlerStack->push($mapResponse);// 创建重试中间件$handlerStack->push(Middleware::retry(self::retryDecider(), self::retryDelay()));// 创建 Guzzle 客户端$http_client = new Client(['handler' => $handlerStack,'connect_timeout' => 5,        // 连接超时 5 秒钟'read_timeout' => 20,           // 读取内容超时 20 秒钟'timeout' => 30,                // 总超时 30 秒钟'verify' => true,              // 检查 ssl'http_errors' => false,         // 暂时忽略 http 错误,但后续需检查状态码'force_ip_resolve' => 'v4',     // 强制使用 IPV4 解析地址'headers' => ['Ocp-Apim-Subscription-Key' => config('jpro.vpcx.api_key') ],]);if (strtolower($method) == 'get') {$options = ['query' =>  $data ];$res = $http_client->request('get', $api_url, $options)->getBody()->getContents();} elseif (strtolower($method) == 'post') {$res = $http_client->request('post', $api_url, ['form_params' =>  $data,])->getBody()->getContents();}return $res;}
}
http://www.mmbaike.com/news/33957.html

相关文章:

  • 服装模板网站济南优化网站关键词
  • 橙光音乐一家做音乐的网站网络广告策划书范文
  • 中小公司做网站免费seo优化工具
  • 电子商务网站建设期末题库百度搜索关键词数据
  • 万全网站建设wl17581网站优化推广方法
  • 网站敏感关键词.txt免费个人网站建站
  • 企腾网广州seo工资
  • 沈阳网站建设syfzkj太原百度公司地址
  • 做网站图片大小电商网站卷烟订货流程
  • 餐饮公司网站建设策划书百度云登陆首页
  • 怎样用ps做网站如何开发自己的小程序
  • 海外百度云网站建设哪家网站推广好
  • wordpress图标不显示重庆seo整站优化外包服务
  • 网站关键词分析工具网站seo诊断工具
  • 企业网站建设哪家便宜广告策划书
  • 网站建设进度上海网上推广
  • 临城企业做网站河北优化seo
  • 做网站公司怎么找客户网站免费搭建平台
  • 从化网站建设公司兰州关键词快速上首页排名
  • 网站制作销售术语怎样建立一个网络销售平台
  • 上海外包软件开发北京seo网络优化招聘网
  • 做钢结构网站有哪些推广网站文案
  • 动态网站建设报告微信营销的方法有哪些
  • 广州今日热点新闻头条资源网站快速优化排名
  • 单位建设网站nba今日最新消息
  • 企业邮箱哪家安全榆林百度seo
  • 海珠网站建设小区推广最有效的方式
  • 怎么做淘宝客的跳转网站搜索引擎营销有哪些
  • 网站虚拟主机公司网站的作用
  • 玩家自助充值网站建设二级域名查询入口