3 namespace GuzzleHttp\Handler
;
5 use GuzzleHttp\Promise\PromiseInterface
;
6 use Psr\Http\Message\RequestInterface
;
9 * HTTP handler that uses cURL easy handles as a transport layer.
11 * When using the CurlHandler, custom curl options can be specified as an
12 * associative array of curl option constants mapping to values in the
13 * **curl** key of the "client" key of the request.
20 * @var CurlFactoryInterface
25 * Accepts an associative array of options:
27 * - handle_factory: Optional curl factory used to create cURL handles.
29 * @param array{handle_factory?: ?CurlFactoryInterface} $options Array of options to use with the handler
31 public function __construct(array $options = [])
33 $this->factory
= $options['handle_factory']
34 ??
new CurlFactory(3);
37 public function __invoke(RequestInterface
$request, array $options): PromiseInterface
39 if (isset($options['delay'])) {
40 \
usleep($options['delay'] * 1000);
43 $easy = $this->factory
->create($request, $options);
44 \
curl_exec($easy->handle
);
45 $easy->errno
= \
curl_errno($easy->handle
);
47 return CurlFactory
::finish($this, $easy, $this->factory
);