如何知道哪些响应数据与其请求的URL相关联(在RollingCurl.php中)?

时间:2010-03-25 11:25:50

标签: php curl

我正在编写一个Web应用程序,它从多个站点(使用RollingCurl)抓取(并行)http响应头,然后将其存储在一个数组中,最后将其输出到JSON格式。

由于某些网站会重定向到新位置,因此“request_callback”函数中的$ info(数组)始终包含一个url($ info ['url']),其中请求的网址被重定向到,这是非常期待的。 但是如何将请求的URL推送到数组(@ $ info ['requested_url'])以了解哪些$ info(响应数据)与其请求的URL相关联?

$urls = array(
 "http://google.com",
 "http://microsoft.com"
    // more urls here
);

$json = array();
$rc = new RollingCurl("request_callback");
$rc->window_size = 20;

foreach ($urls as $url) {
    $request = new Request($url);
    $rc->add($request);
}

$rc->execute();
echo json_encode($json);
exit;

function request_callback($response, $info) {
       global $json;
       $json['status'][] = $info;
}

//来自RollingCurl.php的片段:

// send the return values to the callback function.
$callback = $this->callback;
if (is_callable($callback)){
    $info[‘requested_url’] = **???** // How to get a requested url & push it into $info?
    call_user_func($callback, $output, $info);
}

1 个答案:

答案 0 :(得分:0)

在你的回调函数中,$ info数组应该有一个'url'键,这是curl_multi用于发出请求的URL。

请参阅curl_getinfo上的php文档,了解该数组中的内容列表。