Всем привет.
Нужна помощь. Кто поможет решить скину на карточку на кофе. :)
Итак, гружу данные с одной букмекерской конторы, через
RollingCurl , это такая старенькая и простая библиотека, которая позволяет сделать за раз очень много запросов к сайту и не уйти в блек лист за мини ддос.
Вот код моего скрипта:
<?php
// Модуль получения данных с xstavka
require __DIR__ . '/lib/RollingCurl.php';
require __DIR__ . '/lib/Request.php';
// Получаем список всех матчей лайва
$ch = curl_init("https://1xstavka.ru/LiveFeed/Get1x2_VZip?count=1000&mode=4&top=true&partner=5");
$fp = fopen('data/xstavka_list.json', "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
if(curl_error($ch)) {
fwrite($fp, curl_error($ch));
}
curl_close($ch);
fclose($fp);
// Получаем данные по каждому матчу
$json = file_get_contents('data/xstavka_list.json');
$ids = json_decode($json, true);
$rc = new \RollingCurl\RollingCurl();
$rc->window_size = 20; // Количество одновременных соединений
foreach ($ids['Value'] as $value) {
$rc->get('https://1xstavka.ru/LiveFeed/GetGameZip?id='.$value['I']); // Формируем очередь запросов
}
$result = array();
$rc->setCallback(function(\RollingCurl\Request $request, \RollingCurl\RollingCurl $rollingCurl) {
$t = json_decode($request->getResponseText());
foreach($t as $key=>$value) {
$new[$key]['ID'] = $value->I;
}
print_r($t);
});
$rc->execute(); // Запускаем
Задача такая:
1. Получить данные в массивах JSON
2. Разобрать каждый и сделать свой массив, вида:
Array
[0] => Array
.....ID
.....Name и т.д.
Array
[1] => Array
.....ID
.....Name и т.д.
и т.д.
Для меня это кажется просто. Но, я столкнулся одной неприятной проблемой. Для вывода данных используется объект,
setCallback, и это кажется, цикл. Например, я получаю 10 JSON массивов и на экране в print_r($t) я увижу 10 массивов. Выведенных не разом, а циклом. Причем, я вижу их каждый раз новым массивом. Я имею ввиду, не построчно с номерами ключей, а вот так:
Array (
)
Array (
)
Вопрос, как соединить массивы воедино и обработать результаты? Array_merge, array_values, array_columns - не работают, либо я их неправильно применил. Не знаю. Но я пробовал уже всё. Проблема в том, на мой взгляд, что я пытаюсь их получить из внешней функции.
Заранее спасибо за помощью.