/** * Get a web file (HTML, XHTML, XML, image, etc.) from a URL. Return an * array containing the HTTP server response header fields and content. */ function get_url( $url = null, $params = [ ] ) { if ( $url === null ) { return; } $options = [ CURLOPT_RETURNTRANSFER => true, // return web page CURLOPT_HEADER => true, // return headers CURLOPT_FOLLOWLOCATION => true, // follow redirects CURLOPT_ENCODING => '', // handle all encodings CURLOPT_USERAGENT => 'spider', // who am i CURLOPT_AUTOREFERER => true, // set referer on redirect CURLOPT_CONNECTTIMEOUT => 60, // timeout on connect CURLOPT_TIMEOUT => 60, // timeout on response CURLOPT_MAXREDIRS => 10, // stop after 10 redirects CURLOPT_SSL_VERIFYPEER => false // Disabled SSL Cert checks ]; if ( isset( $params['auth'] ) ) { $options[ CURLOPT_USERPWD ] = $params['auth']; } if ( isset( $params['headers'] ) ) { $options[ CURLOPT_HTTPHEADER ] = $params['headers']; } ini_set( 'max_execution_time', 60 ); $ch = curl_init( $url ); curl_setopt_array( $ch, $options ); $content = curl_exec( $ch ); $error = curl_errno( $ch ); $error_message = curl_error( $ch ); $header = curl_getinfo( $ch ); curl_close( $ch ); $header['error'] = $error; $header['error_message'] = $error_message; $header['content'] = $content; if ( isset( $params['log'] ) ) { file_put_contents( __DIR__ . '/curl.log', json_encode( $header ). "\r\n", FILE_APPEND ); } return $header; }