Ребят, привет! Подскажите пожалуйста — пытаюсь тут реализовать параллельное выполнение около 10 запросов, с помощью multicurl. До этого выполнял их последовательно, друг за другом, но это занимало около 30 секунд. Захотелось как-то ускорить этот процесс, поэтому переписал всё то же самое на curl_multi_*. Все работает, но ответ в виде JSON иногда приходит не полный, объект после определенной глубины просто пустой. Как это можно исправить? Кажется, не понимаю чего-то очевидного.
P. S. Одна часть данных вот такая:
А другая часть, вот такая:
UPD. Вот кусок кода, может немного прояснит ситуацию:
$curls = []; $mh = curl_multi_init();
foreach ($ids as $index => $id) {
$curls[$index] = curl_init(); $ch = $curls[$index];
$url = 'https://shate-m.ru/SearchPart/GetPartPrices?showSubstitutes=true&useCache=false&sortAscending=true&sortField=&partId=' . $id . '&viewCurrency=RUB&selectedAdress=%D0%941';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, 'alternative-parts.cookie');
curl_multi_add_handle($mh, $ch);
}
do {
$status = curl_multi_exec($mh, $active);
curl_multi_select($mh);
} while ($active > 0);
$data = [];
foreach ($curls as $ch) {
$result = json_decode(curl_multi_getcontent($ch), true);
echo 'Результат:<br><pre>' . json_encode($result, JSON_UNESCAPED_UNICODE+JSON_PRETTY_PRINT) . '</pre>';
array_push($data, $result);
curl_multi_remove_handle($mh, $ch);
}
curl_multi_close($mh);