NOTE: For Version 3 of the AWS SDK for PHP, please see the V3 User Guide and V3 API Reference.

# Class CurlMulti

Send `Guzzle\Http\Message\RequestInterface` objects in parallel using curl_multi

  Guzzle\Common\AbstractHasDispatcher implements Guzzle\Common\HasDispatcherInterface
  Guzzle\Http\Curl\CurlMulti implements Guzzle\Http\Curl\CurlMultiInterface

Namespace: Guzzle\Http\Curl
Located at Guzzle/Http/Curl/CurlMulti.php

## Methods summary

- `public` `__construct ( mixed $selectTimeout = 1.0 )`
- `public` `__destruct ( )`
- `public` `add ( Guzzle\Http\Message\RequestInterface $request )`

  Add a request to the pool.

- `public` `all ( )`

  Get an array of attached `Guzzle\Http\Message\RequestInterface` objects

- `public` `remove ( Guzzle\Http\Message\RequestInterface $request )`

  Remove a request from the pool.

- `public` `reset ( bool $hard = false )`

  Reset the state and remove any attached RequestInterface objects

- `public` `send ( )`

  Send a pool of `Guzzle\Http\Message\RequestInterface` requests.

- `public` `count ( )`
- `protected` `throwMultiException ( array $exceptions, array $successful )`

  Build and throw a MultiTransferException

- `protected` `beforeSend ( Guzzle\Http\Message\RequestInterface $request )`

  Prepare for sending

- `protected` `createCurlHandle ( Guzzle\Http\Message\RequestInterface $request )`

  Create a curl handle for a request

- `protected` `perform ( )`

  Get the data from the multi handle

- `protected` `removeErroredRequest ( Guzzle\Http\Message\RequestInterface $request, Exception $e = null )`

  Remove a request that encountered an exception

- `protected` `processResponse ( Guzzle\Http\Message\RequestInterface $request, Guzzle\Http\Curl\CurlHandle $handle, array $curl )`

  Check for errors and fix headers of a request based on a curl response

- `protected` `removeHandle ( Guzzle\Http\Message\RequestInterface $request )`

  Remove a curl handle from the curl multi object

## Methods detail

# `public`
`__construct( mixed $selectTimeout = 1.0 )`
# `public`
`__destruct( )`
# `public `Guzzle\Http\Curl\CurlMultiInterface``
`add( `Guzzle\Http\Message\RequestInterface` $request )`

Add a request to the pool.

#### Parameters

$request
  ``Guzzle\Http\Message\RequestInterface``
  $request Request to add

#### Returns

``Guzzle\Http\Curl\CurlMultiInterface``

#### Implementation of

`Guzzle\Http\Curl\CurlMultiInterface::add()`
# `public array`
`all( )`

Get an array of attached `Guzzle\Http\Message\RequestInterface` objects

#### Returns

`array`

#### Implementation of

`Guzzle\Http\Curl\CurlMultiInterface::all()`
# `public boolean`
`remove( `Guzzle\Http\Message\RequestInterface` $request )`

Remove a request from the pool.

#### Parameters

$request
  ``Guzzle\Http\Message\RequestInterface``
  $request Request to remove

#### Returns

`boolean`
Returns true on success or false on failure

#### Implementation of

`Guzzle\Http\Curl\CurlMultiInterface::remove()`
# `public`
`reset( boolean $hard = false )`

Reset the state and remove any attached RequestInterface objects

#### Parameters

$hard
  `boolean`
  $hard Set to true to close and reopen any open multi handles

#### Implementation of

`Guzzle\Http\Curl\CurlMultiInterface::reset()`
# `public`
`send( )`

Send a pool of `Guzzle\Http\Message\RequestInterface` requests.

#### Throws

`ExceptionCollection`
if any requests threw exceptions during the transfer.

#### Implementation of

`Guzzle\Http\Curl\CurlMultiInterface::send()`
# `public`
`count( )`

#### Implementation of

`Countable::count()`
# `protected`
`throwMultiException( array $exceptions, array $successful )`

Build and throw a MultiTransferException

#### Parameters

$exceptions
  `array`
  $exceptions Exceptions encountered
$successful
  `array`
  $successful Successful requests

#### Throws

``Guzzle\Http\Exception\MultiTransferException``
# `protected`
`beforeSend( `Guzzle\Http\Message\RequestInterface` $request )`

Prepare for sending

#### Parameters

$request
  ``Guzzle\Http\Message\RequestInterface``
  $request Request to prepare

#### Throws

``Exception``
on error preparing the request
# `protected `Guzzle\Http\Curl\CurlHandle``
`createCurlHandle( `Guzzle\Http\Message\RequestInterface` $request )`

Create a curl handle for a request

#### Parameters

$request
  ``Guzzle\Http\Message\RequestInterface``
  $request Request

#### Returns

``Guzzle\Http\Curl\CurlHandle``
# `protected`
`perform( )`

Get the data from the multi handle

# `protected`
`removeErroredRequest( `Guzzle\Http\Message\RequestInterface` $request, `Exception` $e = null )`

Remove a request that encountered an exception

#### Parameters

$request
  ``Guzzle\Http\Message\RequestInterface``
  $request Request to remove
$e
  ``Exception``
  $e Exception encountered

# `protected`
`processResponse( `Guzzle\Http\Message\RequestInterface` $request, `Guzzle\Http\Curl\CurlHandle` $handle, array $curl )`

Check for errors and fix headers of a request based on a curl response

#### Parameters

$request
  ``Guzzle\Http\Message\RequestInterface``
  $request Request to process
$handle
  ``Guzzle\Http\Curl\CurlHandle``
  $handle Curl handle object
$curl
  `array`
  $curl Array returned from curl_multi_info_read

#### Throws

``Guzzle\Http\Exception\CurlException``
on Curl error
# `protected`
`removeHandle( `Guzzle\Http\Message\RequestInterface` $request )`

Remove a curl handle from the curl multi object

#### Parameters

$request
  ``Guzzle\Http\Message\RequestInterface``
  $request Request that owns the handle

### Methods inherited from Guzzle\Common\AbstractHasDispatcher

`addSubscriber()`, `dispatch()`, `getAllEvents()`, `getEventDispatcher()`, `setEventDispatcher()`

### Magic methods summary

## Constants summary

### Constants inherited from Guzzle\Http\Curl\CurlMultiInterface

`ADD_REQUEST`, `BLOCKING`, `MULTI_EXCEPTION`, `POLLING_REQUEST`, `REMOVE_REQUEST`

## Properties summary

`protected resource` | $multiHandle | # cURL multi handle.
`protected array` | $requests | # Attached `Guzzle\Http\Message\RequestInterface` objects.
`protected `SplObjectStorage`` | $handles | # RequestInterface to CurlHandle hash
`protected array` | $resourceHash | # Hash mapping curl handle resource IDs to request objects
`protected array` | $exceptions | # Queued exceptions
`protected array` | $successful | # Requests that succeeded
`protected array` | $multiErrors | # cURL multi error values and codes
`protected float` | $selectTimeout | #

### Properties inherited from Guzzle\Common\AbstractHasDispatcher

`$eventDispatcher`