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

# Class CurlMultiProxy

Proxies requests and connections to a pool of internal curl_multi handles. Each recursive call will add requests to the next available CurlMulti handle.

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

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

## Methods summary

- `public` `__construct ( int $maxHandles = 3, float $selectTimeout = 1.0 )`
- `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` `getAvailableHandle ( )`

  Get an existing available CurlMulti handle or create a new one

- `protected` `cleanupHandles ( )`

  Trims down unused CurlMulti handles to limit the number of open connections

## Methods detail

# `public`
`__construct( integer $maxHandles = 3, float $selectTimeout = 1.0 )`

#### Parameters

$maxHandles
  `integer`
  $maxHandles The maximum number of idle CurlMulti handles to allow to remain open
$selectTimeout
  `float`
  $selectTimeout timeout for curl_multi_select

# `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 `Guzzle\Http\Curl\CurlMulti``
`getAvailableHandle( )`

Get an existing available CurlMulti handle or create a new one

#### Returns

``Guzzle\Http\Curl\CurlMulti``
# `protected`
`cleanupHandles( )`

Trims down unused CurlMulti handles to limit the number of open connections

### 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 array` | $handles | #
`protected array` | $groups | #
`protected array` | $queued | #
`protected mixed` | $maxHandles | #
`protected mixed` | $selectTimeout | #

### Properties inherited from Guzzle\Common\AbstractHasDispatcher

`$eventDispatcher`