Как отправлять массово 150 асинхронных запросов в минуту через pool, при этом чтобы была задержка в 150 запросов в минуту?

Для массовой отправки 150 асинхронных запросов в минуту через pool с задержкой в 150 запросов в минуту в Laravel можно использовать пакет Guzzle.

Guzzle предоставляет удобный и гибкий способ отправки HTTP-запросов в Laravel. Он имеет встроенную поддержку асинхронных запросов, что позволяет отправлять несколько запросов одновременно.

Вам понадобится установить Guzzle через Composer, добавив его в зависимости вашего проекта:

composer require guzzlehttp/guzzle

После установки вы можете создать экземпляр Guzzle и настроить его для отправки асинхронных запросов в пуле:

use GuzzleHttpClient;
use GuzzleHttpHandlerStack;
use GuzzleHttpPromise;

$handlerStack = HandlerStack::create();
$client = new Client(['handler' => $handlerStack]);
$promises = [];

// Генерация и отправка 150 асинхронных запросов
for ($i = 0; $i < 150; $i++) {
    $promises[] = $client->getAsync('https://example.com/api/some-endpoint');
    
    // Задержка в 60 / 150 = 0.4 секунды между запросами
    usleep(400000);
}

// Обработка ответов при завершении всех запросов
$results = Promiseunwrap($promises);

// Дополнительная обработка результатов (например, вывод или сохранение)
foreach ($results as $response) {
    // Обработка ответа
    echo $response->getBody();
}

В приведенном коде мы сначала создаем экземпляр Guzzle и настраиваем его для отправки асинхронных запросов. Затем мы генерируем 150 асинхронных запросов в цикле, добавляя каждый запрос в массив обещаний (promises). После завершения всех запросов, мы распаковываем ответы с помощью метода unwrap из класса Promise, и обрабатываем каждый ответ отдельно.

Чтобы добавить задержку между каждым запросом, мы используем функцию usleep для приостановки выполнения на заданное количество микросекунд. В данном примере задержка 0.4 секунды между запросами обеспечивает отправку 150 запросов в минуту.

Таким образом, вы сможете использовать Guzzle для массовой отправки 150 асинхронных запросов в минуту с задержкой между каждым запросом в Laravel.