Запустите другой curl, когда другой вызов curl уже выполняется в Stack Overflow

Мне нужно вызвать внешний скрипт, в котором я делаю первый вызов с CURL, чтобы получить данные, что занимает около 2-3 минут. Теперь в течение этого времени мне нужно сделать другой внешний вызов с CURL, чтобы получить ход первого вызова. Но проблема в следующем вызове, пока не придет ответ первого CURL. Я также проверил curl_multi, но это также не помогает мне, так как я хочу сделать много звонков, когда происходит первый звонок. Так что любой может помочь мне решить это, пожалуйста.

0

Решение

Я полагаю, что нет необходимости совершать второй звонок для отслеживания прогресса CURL. Вы можете добиться того же, используя опцию CURL CURLOPT_PROGRESSFUNCTION с функцией обратного вызова.

Метод обратного вызова принимает 5 аргументов:

  1. ресурс cURL
  2. Общее количество байтов, ожидаемых для загрузки
  3. Количество загруженных байтов
  4. Общее количество байтов, которые должны быть загружены
  5. Количество загруженных байтов

В методе обратного вызова вы можете рассчитать процент загруженных / загруженных. Пример приведен ниже:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://stackoverflow.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, 'progress');
curl_setopt($ch, CURLOPT_NOPROGRESS, false);
curl_setopt($ch, CURLOPT_HEADER, 0);
$html = curl_exec($ch);
curl_close($ch);

function progress($resource,$download_size, $downloaded, $upload_size, $uploaded)
{
if($download_size > 0)
echo $downloaded / $download_size  * 100 . "%\n";
sleep(1);
}
1

Другие решения

Есть способ сделать это — пожалуйста, посмотрите следующие ссылки, они объясняют, как это сделать с помощью curl_multi_init: php.net curl_multi_init а также http://arguments.callee.info/2010/02/21/multiple-curl-requests-with-php/

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector