PHP керлинг к одному и тому же API много раз с curl_multi - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть API, который я вызываю как минимум 10 раз одновременно с другой информацией.

Это функция, которую я использую в настоящее время.

$mh = curl_multi_init();
$arr = array();
$rows = array();

while ($row = mysqli_fetch_array($query)) {
    array_push($arr, initiate_curl($row, $mh));
    array_push($rows, $row);
}
$running = null;
for(;;){
  curl_multi_exec($mh, $running);
  if(!$running){
     break;
  }
  curl_multi_select($mh);
  usleep(1);
}

sleep(1);

foreach($arr as $curl) {curl_multi_remove_handle($mh, $curl);}
curl_multi_close($mh);
foreach($arr as $key=>$curl) {
    $result = curl_multi_getcontent($curl);
    $dat = simplexml_load_string($result);
    check_time($dat, $rows[$key], $fp);
}

Работает нормальнокогда количество запросов мало, но когда оно растет, некоторые из завитков не возвращают соответствующие данные.то есть они возвращают ноль, и я предполагаю, что сервер проходит до того, как что-то происходит ..

что я могу сделать, чтобы эта работа работала?Я неопытный в php или на сервере и с трудом просматриваю документы ..

, если я создаю другой php-файл, в котором я использую API для работы с данными и multi_curl этот php-файл,это будет работать лучше?(потому что в этом случае не будет так важно, чтобы некоторые вызовы не возвращали данные ... Это постоянно перегрузило бы мой сервер?

1 Ответ

0 голосов
/ 07 декабря 2018

Это не проблема скручивания, это проблема использования сервера, поэтому попробуйте обновить сервер.

Полезные ссылки: link1 , link2

Примечание. Будьте осторожны при использовании бесконечного цикла [for (;;)] и регулярно отслеживайте загрузку ЦП.

...