$req->getConfig()->set("id", $i); $requests[] = $req; } $completeFn = function (Pool $pool, RequestInterface $request, ResponseInterface $response) { echo "Success with " . $request->getConfig()->get("proxy") . " on {$request->getConfig()->get("id")}. request\n"; }; $errorFn = function (Pool $pool, RequestInterface $request, ResponseInterface $response = null, Exception $exception) { if ($exception instanceof NoProxiesLeftException) { echo "All proxies are blocked, terminating...\n"; $pool->cancel(); } else { echo "Failed with " . $request->getConfig()->get("proxy") . " on {$request->getConfig()->get("id")}. request: " . $exception->getMessage() . "\n"; } }; $pool = new Pool($client, $requests, ["pool_size" => 3, "end" => function (EndEvent $event) use(&$pool, $completeFn, $errorFn) { $request = $event->getRequest(); $response = $event->getResponse(); $exception = $event->getException(); if ($exception === null) { $completeFn($pool, $request, $response); } else { $errorFn($pool, $request, $response, $exception); } }]); $pool->wait(); /** @var \paslandau\GuzzleRotatingProxySubscriber\Proxy\RotatingProxy $proxy */ $proxies = $rotator->getProxies(); echo "\nProxy usage:\n"; foreach ($proxies as $proxy) { echo $proxy->getProxyString() . "\t made " . $proxy->getTotalRequests() . " requests in total\n"; }