hasnat / guzzle-mirror-middleware
此软件包允许您在guzzle中镜像请求。
v1.0.5
2019-09-29 11:13 UTC
Requires
- php: >=7.0
- guzzlehttp/guzzle: ^6.3
- guzzlehttp/promises: ^1.3
Requires (Dev)
README
此软件包为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