curl 多请求拆分结果数组

curl multi requests split result array

如果这是一个非常基本的问题,我们深表歉意。我正在使用 multi curl 来处理各种 URL 的数组。它似乎工作正常但是,结果被分组到一个数组中。我想将结果插入到我的数据库中,所以我想我需要单独处理每个 URL 的结果。我的代码如下所示:

$nodes = array($url1, $url2, $url3);
$node_count = count($nodes);

$curl_arr = array();
$master = curl_multi_init();

for($i = 0; $i < $node_count; $i++)
{
    $url =$nodes[$i];
    $curl_arr[$i] = curl_init($url);
    curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl_arr[$i], CURLOPT_FOLLOWLOCATION, true);
    curl_multi_add_handle($master, $curl_arr[$i]);
}

do {
    curl_multi_exec($master,$running);
} while($running > 0);

for($i = 0; $i < $node_count; $i++)
{
$results[] = curl_getinfo($curl_arr[$i], CURLINFO_EFFECTIVE_URL);
$results[] = curl_getinfo($curl_arr[$i], CURLINFO_HTTP_CODE);
$results[] = curl_getinfo($curl_arr[$i], CURLINFO_CONTENT_TYPE);
}
print_r($results);

我的想法是否正确,如果正确,我该如何拆分结果?

感谢您的帮助

您可以按 $i 的值对结果进行分组,只需将最后一个 foreach 更改为:

for($i = 0; $i < $node_count; $i++)
{
  $results[$i][] = curl_getinfo($curl_arr[$i], CURLINFO_EFFECTIVE_URL);
  $results[$i][] = curl_getinfo($curl_arr[$i], CURLINFO_HTTP_CODE);
  $results[$i][] = curl_getinfo($curl_arr[$i], CURLINFO_CONTENT_TYPE);
}

$results 的最后,您会将所有值分组到一个覆盖维数组中。您可以对 $results 执行另一个 foreach 并以更语义化的方式重新格式化它(例如 url