- *
- * Performs an HTTP GET request on the supplied url.
- *
- * The second parameter, if set, is expected to be an associative
- * array where the following keys will be recognized:
- * <pre>
- * - redirect: int, whether and how many redirects to follow
- * - unrestrictedauth: bool, whether to continue sending credentials on
- * redirects to a different host
- * - proxyhost: string, proxy host in "host[:port]" format
- * - proxyport: int, use another proxy port as specified in proxyhost
- * - proxyauth: string, proxy credentials in "user:pass" format
- * - proxyauthtype: int, HTTP_AUTH_BASIC and/or HTTP_AUTH_NTLM
- * - httpauth: string, http credentials in "user:pass" format
- * - httpauthtype: int, HTTP_AUTH_BASIC, DIGEST and/or NTLM
- * - compress: bool, whether to allow gzip/deflate content encoding
- * - port: int, use another port as specified in the url
- * - referer: string, the referer to send
- * - useragent: string, the user agent to send
- * (defaults to PECL::HTTP/version (PHP/version)))
- * - headers: array, list of custom headers as associative array
- * like array("header" => "value")
- * - cookies: array, list of cookies as associative array
- * like array("cookie" => "value")
- * - encodecookies: bool, whether to urlencode the cookies (default: true)
- * - resetcookies: bool, wheter to reset the cookies
- * - cookiestore: string, path to a file where cookies are/will be stored
- * - cookiesession: bool, accept (true) or reset (false) sessioncookies
- * - resume: int, byte offset to start the download from;
- * if the server supports ranges
- * - maxfilesize: int, maximum file size that should be downloaded;
- * has no effect, if the size of the requested entity is not known
- * - lastmodified: int, timestamp for If-(Un)Modified-Since header
- * - etag: string, quoted etag for If-(None-)Match header
- * - timeout: int, seconds the request may take
- * - connecttimeout: int, seconds the connect may take
- * - onprogress: mixed, progress callback
- * - interface: string, outgoing network interface (ifname, ip or hostname)
- * - portrange: array, 2 integers specifying outgoing portrange to try
- * - ssl: array, with the following options:
- * 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, pasword 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
- * </pre>
- *
- * The optional third parameter will be filled with some additional information
- * in form of an associative array, if supplied, like the following example:
- * <pre>
- * <?php
- * array (
- * 'effective_url' => 'http://www.example.com/',
- * 'response_code' => 302,
- * 'connect_code' => 0,
- * 'filetime' => -1,
- * 'total_time' => 0.212348,
- * 'namelookup_time' => 0.038296,
- * 'connect_time' => 0.104144,
- * 'pretransfer_time' => 0.104307,
- * 'starttransfer_time' => 0.212077,
- * 'redirect_time' => 0,
- * 'redirect_count' => 0,
- * 'size_upload' => 0,
- * 'size_download' => 218,
- * 'speed_download' => 1026,
- * 'speed_upload' => 0,
- * 'header_size' => 307,
- * 'request_size' => 103,
- * 'ssl_verifyresult' => 0,
- * 'ssl_engines' =>
- * array (
- * 0 => 'dynamic',
- * 1 => 'cswift',
- * 2 => 'chil',
- * 3 => 'atalla',
- * 4 => 'nuron',
- * 5 => 'ubsec',
- * 6 => 'aep',
- * 7 => 'sureware',
- * 8 => '4758cca',
- * ),
- * 'content_length_download' => 218,
- * 'content_length_upload' => 0,
- * 'content_type' => 'text/html',
- * 'httpauth_avail' => 0,
- * 'proxyauth_avail' => 0,
- * 'num_connects' => 1,
- * 'os_errno' => 0,
- * 'error' => '',
- * )
- * ?>
- * </pre>
- *
- * Returns the HTTP response(s) as string on success, or FALSE on failure.
- */