public function fetchAll(IO\IOInterface $io, array $requests)
{
$successCnt = $failureCnt = 0;
$totalCnt = count($requests);
$multi = new CurlMulti();
$multi->setRequests($requests);
try {
do {
$multi->setupEventLoop();
$multi->wait();
$result = $multi->getFinishedResults();
$successCnt += $result['successCnt'];
$failureCnt += $result['failureCnt'];
foreach ($result['urls'] as $url) {
$io->writeError(" <comment>{$successCnt}/{$totalCnt}</comment>:\t{$url}", true, IO\IOInterface::VERBOSE);
}
} while ($multi->remain());
} catch (FetchException $e) {
// do nothing
}
$skippedCnt = $totalCnt - $successCnt - $failureCnt;
$io->writeError(" Finished: <comment>success: {$successCnt}, skipped: {$skippedCnt}, failure: {$failureCnt}, total: {$totalCnt}</comment>", true, IO\IOInterface::VERBOSE);
}