Что бы не использовать глобальные переменные, реализовал через класс.
Может кому пригодится. Класс можно просто скопипастить.
(кастомные заголовки и поддержка chunked)
Всем спасибо!
// класс запроса
class Curl{
// свойства
var $link;
var $headers;
var $chunked = false;
var $response = '';
// метод запроса
function GetRequest(){
// ссылки свойств
$link = &$this -> link;
$headers = &$this -> headers;
$chunked = &$this -> chunked;
$response = &$this -> response;
// логика метода
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $link);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
if($chunked){
curl_setopt($ch, CURLOPT_WRITEFUNCTION, array($this, 'Callback'));
curl_exec($ch);
}else{
$response = curl_exec($ch);
};
curl_close($ch);
$response = html_entity_decode($response, null, 'UTF-8');
return $response;
}
// метод callback запроса
function Callback($ch, $str){
// ссылки свойств
$response = &$this -> response;
// логика метода
$response .= $str;
return strlen($str);
}
};
// создаем экземпляр класса
$curlRequest = new Curl;
// параметры запроса
$curlRequest -> link = 'http://example.com/';
$curlRequest -> chunked = true; // true если тип ответа chunked
$curlRequest -> headers = Array(
'Accept-Encoding: deflate, sdch',
'User-Agent: Mozilla/5.0',
'Accept: text/plain',
'Cache-Control: no-cache',
);
// запрос
$curlRequest -> GetRequest();
// выводим ответ
print $curlRequest -> response;