参考:Guzzle文档
PHP-Guzzle是一个HTTP客户端,可以使用它来发送各种HTTP请求。
并发请求一
$promises = [
'key1' => $client->getAsync($website1),
'key2' => $client->getAsync($website2),
'key3' => $client->getAsync($website3),
];
$results = \GuzzleHttp\Promise\unwrap($promises);
foreach ($results as $key => $result) {
doSomething();
// results是promises的响应结果数组,键与promises的键相同
}
并发请求二
$websiteRequests = function () use ($websites) {
foreach ($websites as $website) {
yield new Request('GET', $website);
}
};
$pool = new Pool($client, $websiteRequests(), [
'concurrency' => 20,
'fulfilled' => function ($response, $index) use (&$websites) {
doSomething();
// 对每个响应response进行处理,填充websites
},
'rejected' => function ($reason, $index) {
// 失败的请求
},
]);
$promise = $pool->promise();
$promise->wait();
// 等待请求完成