如果这是一个非常基本的问题,我们深表歉意。我正在使用多 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)
关于php - curl 多请求分割结果数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28155525/