【发布时间】:2016-01-16 02:59:36
【问题描述】:
我正在使用Rolling cUrl PHP 库通过 JSON 从 API 中获取数据。
在 Rolling CURL 库文档中,我尝试了以下示例,效果很好:
$rollingCurl = new \RollingCurl\RollingCurl();
$rollingCurl
->get('https://www.google.com')
->get('http://www.msn.com')
->setCallback(function(\RollingCurl\Request $request, \RollingCurl\RollingCurl $rollingCurl) {
// parsing html with regex is evil (http://bit.ly/3x9sQX), but this is just a demo
if (preg_match("#<title>(.*)</title>#i", $request->getResponseText(), $out)) {
$title = $out[1];
}
else {
$title = '[No Title Tag Found]';
}
echo "Fetch complete for (" . $request->getUrl() . ") $title " . PHP_EOL;
})
->setSimultaneousLimit(3)
->execute();
我尝试根据需要对其进行更改,并将每个“抓取”的数据保存在一个数组中,但我找不到从回调或外部保存数据的方法。
这是我尝试过的:
$rollingCurl = new \RollingCurl\RollingCurl();
$rollingCurl
->get('https://www.myapi.com')
->get('https://www.myapi2.com')
->setCallback(function(\RollingCurl\Request $request, \RollingCurl\RollingCurl $rollingCurl) {
$output = json_decode($request->getResponseText());
$data[$x++] = $output; //How do I save it outside this function?
})
->setSimultaneousLimit(3)
->execute();
//Can I get the content of each API call without the callback?
print_r($data); // returns nothing :(
所以我的问题是:
如何在此函数之外保存数据数组?
可以不通过回调(执行后)获取每个API调用的内容吗?
【问题讨论】: