_connection = curl_init($url); if ($header) { curl_setopt($this->_connection, CURLOPT_HEADER, true); } if ($followLocation) { curl_setopt($this->_connection, CURLOPT_FOLLOWLOCATION, true); curl_setopt($this->_connection, CURLOPT_MAXREDIRS, $maxRedirects); } curl_setopt($this->_connection, CURLOPT_RETURNTRANSFER, true); curl_setopt($this->_connection, CURLOPT_CONNECTTIMEOUT, $connectTimeout); // skip resources with long time response curl_setopt($this->_connection, CURLOPT_TIMEOUT, $connectTimeout); // prevent infinitive connection on streaming resources detected @TODO curl_setopt($this->_connection, CURLOPT_SSL_VERIFYHOST, $sslVerifyHost); curl_setopt($this->_connection, CURLOPT_SSL_VERIFYPEER, $sslVerifyPeer); curl_setopt($this->_connection, CURLOPT_NOPROGRESS, false); curl_setopt($this->_connection, CURLOPT_PROGRESSFUNCTION, function( $downloadSize, $downloaded, $uploadSize, $uploaded ){ return ($downloaded > CRAWL_CURLOPT_PROGRESSFUNCTION_DOWNLOAD_SIZE_LIMIT) ? 1 : 0; }); if ($userAgent) { curl_setopt($this->_connection, CURLOPT_USERAGENT, (string) $userAgent); } $this->_response = curl_exec($this->_connection); } public function __destruct() { curl_close($this->_connection); } public function getError() { if (curl_errno($this->_connection)) { return curl_errno($this->_connection); } else { return false; } } public function getCode() { return curl_getinfo($this->_connection, CURLINFO_HTTP_CODE); } public function getContentType() { return curl_getinfo($this->_connection, CURLINFO_CONTENT_TYPE); } public function getSizeDownload() { return curl_getinfo($this->_connection, CURLINFO_SIZE_DOWNLOAD); } public function getSizeRequest() { return curl_getinfo($this->_connection, CURLINFO_REQUEST_SIZE); } public function getTotalTime() { return curl_getinfo($this->_connection, CURLINFO_TOTAL_TIME_T); } public function getContent() { return $this->_response; } }