我正在编写一个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);
}
答案 0 :(得分:0)
在你的回调函数中,$ info数组应该有一个'url'键,这是curl_multi用于发出请求的URL。
请参阅curl_getinfo上的php文档,了解该数组中的内容列表。