Pool
in package
Параллельное выполнение независимых запросов на базе `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
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> —карта «ключ → результат»