承接 poor-plebs/guzzle-connect-retry-decider 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

poor-plebs/guzzle-connect-retry-decider

Composer 安装命令:

composer require poor-plebs/guzzle-connect-retry-decider

包简介

A guzzle retry middleware decider that re-attempts requests whenever a connection fails to be established. Always retries up to x times for GET requests and under specific conditions also for other HTTP methods.

README 文档

README

CI

What is it for? | What are the requirements? | How to install it? | How to use it? | How to contribute?

A guzzle retry middleware decider that re-attempts requests whenever a connection fails to be established. Always retries up to x times for GET requests and under specific conditions also for other HTTP methods.

What is it for?

To be more resilient against all kind of connectivity issues, it is a good practice to just simply retry the request. The guzzle http package already comes with a generic retry middleware out of the box that accepts a decider callable.

This package provides a decider that will re attempt a request up to x times when ever a guzzle connect exception is thrown. For GET requests, the decider will always retry. For other HTTP methods, the decider will only retry, when no connection could be established yet (no data sent and for HTTPS no handshake done) to prevent potential double send incidents.

What are the requirements?

  • PHP 8.1 or above

How to install it?

composer require poor-plebs/guzzle-connect-retry-decider

How to use it?

use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;

$handlerStack = HandlerStack::create();

// Where to put this middleware in the middleware stack depends on your usecase.
// Usually just before the handler on top or before a log middleware.
$handlerStack->push(
    Middleware::retry(new ConnectRetryDecider(
        maxRetries: 3,
        onBeforeRetry: function (
            int $retries,
            RequestInterface $request,
            Throwable $exception
        ): void {
            /* Optional closure that is executed just before the retry is done.
             * At this point it is already decided that we will retry.
             *
             * Can be used to log the following retry or do some other action.
             */
        }
    )),
    'connect_retry',
);

$client = new Client([
    'base_uri' => 'https://sometest.com/',
    'handler' => $handlerStack,
]);

$client->getAsync('information')->wait();

The maxRetries and onBeforeRetry are both optional. Max retries defaults to 3 retries. If provided, the onBeforeRetry will be executed right before a retry. The callback receives the number of retries already done, the request instance and the exception that caused the previous attempt to fail.

How to contribute?

poor-plebs/guzzle-connect-retry-decider follows semantic versioning. Read more on semver.org.

Create issues to report problems or requests. Fork and create pull requests to propose solutions and ideas. Always add a CHANGELOG.md entry in the unreleased section.

统计信息

  • 总下载量: 4.48k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 0
  • 依赖项目数: 2
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-12-18

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固