Я использую Rolling cUrl PHP-библиотеку для получения данных из API с помощью JSON.Сохранение данных из внутренней функции PHP
В документации библиотеки Роллинг 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 без обратного вызова (после выполнения)?