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)
如果这是一个非常基本的问题,我们深表歉意。我正在使用 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)