hasnat / guzzle-mirror-middleware

此软件包允许您在guzzle中镜像请求。

v1.0.5 2019-09-29 11:13 UTC

This package is auto-updated.

Last update: 2024-09-29 05:42:27 UTC


README

Latest Version Build Status Total Downloads

此软件包为guzzle提供了中间件,用于将请求镜像到多个客户端。

安装

要安装,请使用composer

composer require hasnat/guzzle-mirror-middleware

用法

要使用此中间件,您需要像这样初始化它

设置镜像客户端

$mirrorsMiddleware = new \GuzzleMirror\GuzzleMirrorMiddleware([
    'mirrors' => [
        [
            'client' => new \GuzzleHttp\Client(['base_uri' => 'http://mirror1.com/']),
            'ignore_mirror_failures'    => false, // default=false -- failures will be sent on ignored_failures_callback, on true MirrorFailedException is thrown
            'ignore_mirror_methods'     => ['GET'] // default=[] -- all the methods you'd like to ignore for this mirror
        ],
        [
            'client' => new \GuzzleHttp\Client(['base_uri' => 'http://mirror2.com/'])
        ],
        [
            'client' => new \GuzzleHttp\Client(['base_uri' => 'http://mirror3.com/'])
        ]
    ],
    'mirrors_concurrency'       => 4,  // default=4 -- send to 4 mirrors at a time
    'no_mirror_on_failure'      => true, // default=true -- if there's a failure in main request don't send to mirrors
    'mirror_responses'          => function(array $responses) {}, // default=null -- all mirror responses
    'ignored_failures_callback' => function(array $failures) {}, // default=null -- when ignoring failures no MirrorFailedException is thrown but you can get failures here
])

然后像这样将其注入到Guzzle中

$handlerStack = HandlerStack::create();
$handlerStack->push(new \GuzzleMirror\GuzzleMirrorMiddleware([
    'mirrors' => [
        ['client' => new \GuzzleHttp\Client(['base_uri' => 'http://mirror1.com/'])],
        ['client' => new \GuzzleHttp\Client(['base_uri' => 'http://mirror2.com/'])],
        ['client' => new \GuzzleHttp\Client(['base_uri' => 'http://mirror3.com/'])]
    ]
]));
$this->client = new GuzzleHttp\Client([
    'base_uri' => 'base_uri' => 'http://example.com/',
    'handler' => $handlerStack
]);

从现在起,使用$guzzleClient发送的每个请求都将被复制到镜像中。

测试

hasnat/guzzle-mirror-middleware 包含一个PHPUnit 测试套件和一个使用PHP CS Fixer 的编码风格合规性测试套件。

要运行测试,请在项目文件夹中运行以下命令。

$ docker-compose run test

许可

MIT