Имеется список прокси, я их проверяю на работоспособность через Guzzle.
Как мне узнать какой прокси был использован в запросе и сколько времени заняло выполнения запроса?
$client = new Client(['timeout' => 3,
'on_stats' => function (TransferStats $stats) {
// тут можно получить время выполнения запроса
}
]);
$proxies = [
'202.147.195.132:8080',
'193.123.227.220:59394',
'103.47.67.158:8080',
'203.112.76.193:8080',
'36.92.107.194:8080',
];
array_walk($proxies, function (&$item) {
$item = trim($item);
});
$result = [];
$data = [];
foreach ($proxies as $proxy) {
$data[] = [
'proxy' => $proxy,
'request' => new Request('GET', 'https://example.com', [
'proxy' => $proxy,
'connect_timeout' => 3,
])
];
}
$requests = function () use ($data) {
foreach ($data as $item) {
yield $item['request'];
}
};
$pool = new Pool($client, $requests(), [
'concurrency' => 100,
// Тут через индекс узнаём какой прокси использовался. Уверен, что должен быть более удобный способ.
'fulfilled' => function (Response $response, $index) use ($data, &$result) {
$result[] = $data[$index]['proxy'];
}
]);
$promise = $pool->promise();
$promise->wait();