CloudCastle Curl

Pool
in package

FinalYes

Параллельное выполнение независимых запросов на базе `curl_multi`.

Выполняет запросы одновременно, но не более concurrency за раз, освобождая слот сразу по завершении очередного обмена. Перед добавлением каждый запрос проходит защиту от SSRF. Возвращает карту «ключ → PoolResult», где результат каждого запроса независим: сбой одного не прерывает остальные.

Пул выполняет по одному обмену на запрос (без авто-перенаправлений и повторов) — это низкоуровневый примитив пропускной способности; для полного конвейера применяйте Client::send().

Функции curl_* и curl_multi_* вызываются без указания пространства имён — в тестах их можно подменить, не выходя в сеть.

Table of Contents

Methods

__construct()  : mixed
add()  : $this
Добавить запрос с явным ключом.
addRequest()  : $this
Добавить запрос с автоматическим числовым ключом.
concurrency()  : int
Максимум одновременных запросов.
send()  : array<string|int, PoolResult>
Выполнить все запросы и вернуть результаты.

Methods

__construct()

public __construct([int $concurrency = 10 ][, CurlConfigurator $configurator = new CurlConfigurator() ][, SsrfGuard $guard = new SsrfGuard() ][, Redactor $redactor = new Redactor() ]) : mixed
Parameters
$concurrency : int = 10

максимум одновременных запросов

$configurator : CurlConfigurator = new CurlConfigurator()

сборщик опций cURL

$guard : SsrfGuard = new SsrfGuard()

защита от SSRF

$redactor : Redactor = new Redactor()

редактор секретов для сообщений об ошибках

add()

Добавить запрос с явным ключом.

public add(int|string $key, Request $request) : $this
Parameters
$key : int|string

ключ результата

$request : Request

запрос

Return values
$this

этот же пул

addRequest()

Добавить запрос с автоматическим числовым ключом.

public addRequest(Request $request) : $this
Parameters
$request : Request

запрос

Return values
$this

этот же пул

concurrency()

Максимум одновременных запросов.

public concurrency() : int
Return values
int

предел конкурентности

send()

Выполнить все запросы и вернуть результаты.

public send() : array<string|int, PoolResult>

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

Return values
array<string|int, PoolResult>

карта «ключ → результат»

On this page

Search results