# Options usable with the HttpRequest class and request functions

## Options related to time outs

timeout (`integer`)

- seconds the whole request may take to complete

connecttimeout (`integer`)

- seconds the connect, including name resolving, may take

dns_cache_timeout (`integer`)

- seconds after an dns cache entry times out

## Options related to urls

url (`string`)

- the request url

port (`integer`)

- use another port as specified in the url

redirect (`integer`)

- whether and how many redirects to follow; defaults to 0

unrestrictedauth (`bool`)

- whether to continue sending credentials on redirects to a different host

referer (`string`)

- the referring url to send

## Options related to cookies

encodecookies (`bool`)

- whether custom cookies should be `urlencode`d prior sending

cookies (`array`)

- list of cookies as associative array like `array("cookie" => "value")`

cookiestore (`string`)

- path to a file where cookies are/will be stored

cookiesession (`bool`)

- don't load session cookies from cookiestore if &true;

## Options related to headers

useragent (`string`)

- the user agent to send; defaults to `PECL::HTTP/x.y.z (PHP/x.y.z)`; omitted if explicitly set to an empty string

lastmodified (`int`)

- timestamp for If-(Un)Modified-Since header

etag (`string`)

- quoted etag for If-(None-)Match header

headers (`array`)

- list of custom headers as associative array like `array("header" => "value")`

## Options related to authentication

httpauth (`string`)

- http credentials in "user:pass" format

httpauthtype (`int`)

- HTTP authentication type constant

(`array`)

## Options related to proxies

proxyhost (`string`)

- proxy host in "host[:port]" format

proxyport (`int`)

- use another proxy port as specified in proxyhost

proxytype (`int`)

- HTTP proxy type constant

proxyauth (`string`)

- proxy credentials in "user:pass" format

proxyauthtype (`int`)

- HTTP authentication type constant

## Options related to the transfer

compress (`bool`)

- whether to request and accept a gzip/deflate content encoded response

resume (`int`)

- start the download at the specified byte offset if server support is given (indicated by a 206 response code)

range (`array`)

- array of arrays, each containing two `integer`s, specifying the ranges to download if server support is given (indicated by a 206 response code); only recognized if the resume option is empty

## Options imposing limits

maxfilesize (`integer`)

- maximum file size that should be downloaded; has no effect, if the size of the requested entity is unknown (eg. dynamic pages with chunked transfer encoding etc.)

low_speed_limit (`int`)

- the lowest transfer speed a successful request may have

low_speed_time (`int`)

- the time in which `low_speed_limit` must be transferred for a successful request

max_send_speed (`int`)

- maximum send speed in bytes per second

max_recv_speed (`int`)

- maximum receive speed in bytes per second

## Callback options

onprogress (`callable`)

- progress callback

## Network options

interface (`string`)

- outgoing network interface (ifname, ip or hostname)

portrange (`array`)

- 2 integers specifying outgoing portrange to try

## SSL options

ssl (`array`)

- SSL options are set through an array with the single "ssl" request option name.

  cert (`string`)

- path to certificate

certtype (`string`)

- type of certificate

certpasswd (`string`)

- password for certificate

key (`string`)

- path to key

keytype (`string`)

- type of key

keypasswd (`string`)

- password for key

engine (`string`)

- ssl engine to use

version (`int`)

- ssl version to use

verifypeer (`bool`)

- whether to verify the peer

verifyhost (`bool`)

- whether to verify the host

cipher_list (`string`)

- list of allowed ciphers

cainfo (`string`)

capath (`string`)

random_file (`string`)

egdsocket (`string`)