Как правильно отправить много запросов?

Рейтинг: 0Ответов: 1Опубликовано: 09.02.2023

у меня имеется массив с айди юзерами, их там очень много, после я перебираю циклом for всех юзеров в массиве и отправляю запрос с помощью curl внутри этого цикла, а ответ ожидаю по 3 минуты если не больше. Как правильно это сдедать, чтобы такого не было?

Ответы

▲ 0

Если я правильно понял Ваш вопрос (на будущее, оставляйте свои примеры кода, чтобы было проще разобраться), то можете использовать функцию curl_multi_exec, чтобы ускорить процесс отправки запросов. Она позволяет выполнять несколько запросов curl одновременно, вместо того, чтобы отправлять их по одному.

Пример кода:

<?php

$user_ids = [1, 2, 3, 4, 5];
$results = [];

// Инициализируем мультисессию
$mh = curl_multi_init();
$handles = [];

foreach ($user_ids as $id) {
    // Инициализируем отдельный сеанс cURL
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://example.com/api/users/$id");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    // Добавляем сеанс в мультисессию
    curl_multi_add_handle($mh, $ch);
    $handles[] = $ch;
}

// Запускаем мультисессию
$running = null;
do {
    curl_multi_exec($mh, $running);
    curl_multi_select($mh);
} while ($running > 0);

foreach ($handles as $ch) {
    $results[] = curl_multi_getcontent($ch);
    curl_multi_remove_handle($mh, $ch);
    curl_close($ch);
}

// Закрываем мультисессию
curl_multi_close($mh);

// Выводим результаты
print_r($results);

?>